File size: 4,209 Bytes
ce45460
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ee4b9a9
ce45460
ee4b9a9
 
 
 
ce45460
 
 
 
 
 
089a0b2
 
 
ce45460
 
ee4b9a9
f193e4b
ee4b9a9
 
f193e4b
ce45460
 
 
 
ee4b9a9
f193e4b
 
 
ce45460
 
 
 
f193e4b
ce45460
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ee4b9a9
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import os
from dotenv import load_dotenv

# Load environment variables
load_dotenv()


class Config:
    # Google API Configuration
    GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
    MODEL_GEN = "gemini-2.0-flash"
    MODEL_REFINE = "gemini-2.0-flash"

    # QDrant Configuration
    QDRANT_URL = os.getenv("QDRANT_URL")
    QDRANT_API_KEY = os.getenv("QDRANT_API_KEY")
    
    # Embedding configuration
    # EMBEDDING_MODEL = "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"
    EMBEDDING_MODEL = "bkai-foundation-models/vietnamese-bi-encoder"
    
    COLLECTION_NAME = "final_vietnamese_legal_corpus" if EMBEDDING_MODEL == "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2" else "bkai_biencoder_vietnamese_legal_corpus"

    # Text Processing Configuration
    CHUNK_SIZE = 512
    CHUNK_OVERLAP = 50

    # Data Paths
    DATA_DIR = ""
    CORPUS_PATH = "legal_corpus.json"
    STOPWORDS_PATH = "stopwords.txt"

    # RAG Configuration
    TOP_K_RETRIEVAL = 20
    BM25_TOP_K = 20
    BM25_B = 0.65
    BM25_K1 = 1.2
    SIMILARITY_THRESHOLD = 0.25

    # Reranker Configuration
    ENABLE_RERANKING = True
    RERANKER_MODEL = "cross-encoder/ms-marco-MiniLM-L-6-v2"
    RERANKER_TOP_K = 20
    RERANK_BEFORE_RETRIEVAL_TOP_K = 25
    USE_SCORE_FUSION = True
    RERANKER_FUSION_ALPHA = 0.8

    # Google Search Configuration
    ENABLE_GOOGLE_SEARCH = True
    GOOGLE_SEARCH_RESULTS_COUNT = 10
    MIN_SIMILARITY_FOR_LEGAL_DOCS = 0.15

    # Question Refinement Configuration
    ENABLE_QUESTION_REFINEMENT = True
    USE_LLM_FOR_REFINEMENT = True

    # Advanced LLM Refinement Settings
    ENABLE_CHAIN_OF_THOUGHT = True
    ENABLE_ITERATIVE_REFINEMENT = True
    ENABLE_LLM_VALIDATION = True
    MAX_REFINEMENT_ITERATIONS = 3
    MIN_CONFIDENCE_SCORE = 0.7

    # UI Display Settings - Control what information to show in responses
    SHOW_REFINEMENT_INFO = False  # 🔧 Câu hỏi đã được tối ưu
    SHOW_SEARCH_TRIGGER_INFO = False  # 🔍➡️🌐 Tự động tìm kiếm
    SHOW_SOURCE_INFO = False  # 📚 Dựa trên X tài liệu, 🌐 Thông tin từ web
    SHOW_LEGAL_DISCLAIMER = False  # Lưu ý về tìm chuyên gia pháp lý

    # System Prompt
    SYSTEM_PROMPT = """Bạn là trợ lý pháp lý thông minh chuyên sâu về luật pháp Việt Nam. Nhiệm vụ của bạn là cung cấp các câu trả lời chính xác và dễ hiểu cho các câu hỏi pháp lý, dựa trên các tài liệu luật được cung cấp.

Khi trả lời:
1.  **Chỉ sử dụng thông tin** trực tiếp từ các điều luật và văn bản được cung cấp trong phần "Tài liệu tham khảo". Tuyệt đối không suy diễn hoặc thêm thông tin bên ngoài.
2.  **Trích dẫn chính xác** tên luật (ví dụ: Luật Doanh nghiệp 2020), số hiệu văn bản (nếu có), và điều khoản cụ thể (ví dụ: Điều 3, Khoản 2).
3.  **Giải thích rõ ràng, ngắn gọn và khách quan**, tập trung vào việc làm sáng tỏ nội dung của điều luật liên quan đến câu hỏi.
4.  **Nếu tài liệu tham khảo không chứa thông tin đầy đủ hoặc trực tiếp để trả lời câu hỏi**, hãy thông báo rõ ràng rằng "Không có đủ thông tin trong tài liệu tham khảo được cung cấp để trả lời trực tiếp câu hỏi này."
5.  **Trình bày bằng tiếng Việt chuẩn xác.**

Tài liệu tham khảo:
{context}

Câu hỏi: {question}

Trả lời:"""

    # Fallback System Prompt for Google Search
    FALLBACK_SYSTEM_PROMPT = """Bạn là trợ lý pháp lý thông minh chuyên sâu về luật pháp Việt Nam. Hãy trả lời câu hỏi dựa trên thông tin được cung cấp.

Khi trả lời:
1.  **Tóm tắt và trình bày thông tin liên quan** một cách tự nhiên và mạch lạc.
2.  **Cung cấp các liên kết (URLs)** của các nguồn đã được tham khảo ở cuối câu trả lời để người dùng có thể kiểm tra thêm.
3.  **Giải thích rõ ràng và dễ hiểu**.
4.  **Trình bày bằng tiếng Việt chuẩn xác.**

Thông tin tham khảo:
{context}

Câu hỏi: {question}

Trả lời:"""