update new hybrid match_documents
Browse files- app/constants.py +12 -0
- app/supabase_db.py +12 -2
app/constants.py
CHANGED
|
@@ -109,6 +109,18 @@ VEHICLE_KEYWORD_TO_COLUMN = {
|
|
| 109 |
"bộ hành": "dibo"
|
| 110 |
}
|
| 111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
|
| 113 |
SHEET_RANGE = 'chat!A2:L'
|
| 114 |
EMBEDDING_DIM = 1536
|
|
|
|
| 109 |
"bộ hành": "dibo"
|
| 110 |
}
|
| 111 |
|
| 112 |
+
# 1. Định nghĩa danh sách stop words của riêng bạn
|
| 113 |
+
# Bạn có thể thêm/bớt các từ trong danh sách này tùy ý
|
| 114 |
+
VIETNAMESE_STOP_WORDS = {
|
| 115 |
+
"bị", "bởi", "cả", "các", "cái", "cần", "càng", "chỉ", "chiếc", "cho",
|
| 116 |
+
"chứ", "chưa", "có", "có thể", "cứ", "cùng", "cũng", "đã", "đang", "để",
|
| 117 |
+
"do", "đó", "được", "gì", "khi", "không", "là", "lại", "lên", "lúc",
|
| 118 |
+
"mà", "mỗi", "một", "nên", "nếu", "ngay", "như", "nhưng", "những",
|
| 119 |
+
"nơi", "nữa", "phải", "qua", "ra", "rằng", "rất", "rồi", "sau", "sẽ",
|
| 120 |
+
"thì", "trên", "trước", "từ", "từng", "và", "vẫn", "vào", "vậy", "về",
|
| 121 |
+
"vì", "việc", "với", "xong", "phạt", "xử", "xe"
|
| 122 |
+
# ... thêm các từ khác bạn muốn loại bỏ
|
| 123 |
+
}
|
| 124 |
|
| 125 |
SHEET_RANGE = 'chat!A2:L'
|
| 126 |
EMBEDDING_DIM = 1536
|
app/supabase_db.py
CHANGED
|
@@ -4,7 +4,7 @@ from supabase.client import create_client, Client
|
|
| 4 |
from loguru import logger
|
| 5 |
|
| 6 |
from .utils import timing_decorator_sync
|
| 7 |
-
from .constants import VEHICLE_KEYWORD_TO_COLUMN
|
| 8 |
|
| 9 |
class SupabaseClient:
|
| 10 |
def __init__(self, url: str, key: str):
|
|
@@ -41,7 +41,17 @@ class SupabaseClient:
|
|
| 41 |
|
| 42 |
# Chuẩn bị chuỗi truy vấn trong Python
|
| 43 |
# Tách từ và nối bằng '|'
|
| 44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
try:
|
| 47 |
payload = {
|
|
|
|
| 4 |
from loguru import logger
|
| 5 |
|
| 6 |
from .utils import timing_decorator_sync
|
| 7 |
+
from .constants import VEHICLE_KEYWORD_TO_COLUMN, VIETNAMESE_STOP_WORDS
|
| 8 |
|
| 9 |
class SupabaseClient:
|
| 10 |
def __init__(self, url: str, key: str):
|
|
|
|
| 41 |
|
| 42 |
# Chuẩn bị chuỗi truy vấn trong Python
|
| 43 |
# Tách từ và nối bằng '|'
|
| 44 |
+
|
| 45 |
+
"""
|
| 46 |
+
Xử lý câu hỏi thô: tách từ, loại bỏ stop words,
|
| 47 |
+
và trả về chuỗi text sạch để truyền vào RPC.
|
| 48 |
+
"""
|
| 49 |
+
# Tách câu hỏi thành các từ (chuyển về chữ thường)
|
| 50 |
+
words = user_question.lower().split()
|
| 51 |
+
|
| 52 |
+
# Lọc bỏ các từ có trong danh sách stop words và nối thành chuỗi với dấu cách
|
| 53 |
+
or_query_tsquery = " ".join([word for word in words if word not in VIETNAMESE_STOP_WORDS])
|
| 54 |
+
logger.info(f"[DEBUG][RPC]: or_query_tsquery: {or_query_tsquery}")
|
| 55 |
|
| 56 |
try:
|
| 57 |
payload = {
|