File size: 1,761 Bytes
300df0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import os
import logging
import pandas as pd
from dotenv import load_dotenv
from src.embeddings.retriever import EmbeddingRetriever

load_dotenv()

logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s — %(message)s")
logger = logging.getLogger(__name__)

def export_to_parquet():
    uri = os.getenv("NEO4J_URI")
    user = os.getenv("NEO4J_USER")
    password = os.getenv("NEO4J_PASSWORD")
    
    logger.info("--- BẮT ĐẦU TRÍCH XUẤT TOÀN BỘ DỮ LIỆU TỪ NEO4J ---")
    retriever = EmbeddingRetriever(uri, user, password)
    
    try:
        # Lấy toàn bộ segments (không truyền doc_id)
        segments = retriever.get_all_segments()
        logger.info(f"Đã lấy xong {len(segments)} segments.")
        
        if not segments:
            logger.warning("Không có dữ liệu để xuất!")
            return

        # Chuyển sang DataFrame
        df = pd.DataFrame(segments)
        
        # Đường dẫn file output
        output_path = "data/legal_segments_for_colab.parquet"
        
        # Xuất ra Parquet (yêu cầu pyarrow hoặc fastparquet)
        logger.info(f"Đang ghi dữ liệu ra file: {output_path}...")
        df.to_parquet(output_path, engine='pyarrow', index=False)
        
        logger.info(f"=== XUẤT DỮ LIỆU THÀNH CÔNG ===")
        logger.info(f"Tổng số bản ghi: {len(df)}")
        logger.info(f"File path: {os.path.abspath(output_path)}")
        
    except ImportError:
        logger.error("Thiếu thư viện 'pyarrow'. Hãy chạy: pip install pyarrow")
    except Exception as e:
        logger.error(f"Lỗi khi xuất dữ liệu: {e}")
    finally:
        retriever.close()

if __name__ == "__main__":
    export_to_parquet()