加入日志管理
This commit is contained in:
@@ -22,12 +22,8 @@ class SchemaIndexer:
|
||||
功能:
|
||||
1. 为表结构构建向量索引
|
||||
2. 基于问题的表检索
|
||||
<<<<<<< HEAD
|
||||
3. 默认使用 Chroma ``PersistentClient``,数据落在 ``persist_dir``(与 ``VECTOR_DB_PATH`` 一致);
|
||||
仅当环境变量 ``SCHEMA_INDEXER_EPHEMERAL=true`` 或构造参数 ``use_ephemeral=True`` 时使用内存客户端。
|
||||
=======
|
||||
3. Chroma 使用持久化(PersistentClient),向量与元数据写入 ``persist_dir``,进程重启后可复用
|
||||
>>>>>>> 9369563942d8de442508613191670123d5ae9d08
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
@@ -43,11 +39,7 @@ class SchemaIndexer:
|
||||
|
||||
Args:
|
||||
embedder: Embedding模型实例
|
||||
<<<<<<< HEAD
|
||||
persist_dir: Chroma 持久化目录(默认与编排器 ``vector_db_path`` / ``VECTOR_DB_PATH`` 一致)
|
||||
=======
|
||||
persist_dir: Chroma 持久化根目录(磁盘路径)
|
||||
>>>>>>> 9369563942d8de442508613191670123d5ae9d08
|
||||
collection_name: 集合名称
|
||||
use_ephemeral: 为 True 时使用内存 Chroma;为 None 时读环境变量 SCHEMA_INDEXER_EPHEMERAL
|
||||
"""
|
||||
@@ -56,17 +48,15 @@ class SchemaIndexer:
|
||||
self.persist_dir.mkdir(parents=True, exist_ok=True)
|
||||
self.collection_name = collection_name
|
||||
|
||||
<<<<<<< HEAD
|
||||
env_ephemeral = os.getenv("SCHEMA_INDEXER_EPHEMERAL", "").lower() in (
|
||||
"1",
|
||||
"true",
|
||||
"yes",
|
||||
=======
|
||||
)
|
||||
# 持久化 Chroma:数据落盘至 persist_dir
|
||||
self.client = chromadb.PersistentClient(
|
||||
path=str(self.persist_dir),
|
||||
settings=ChromaSettings(anonymized_telemetry=False),
|
||||
>>>>>>> 9369563942d8de442508613191670123d5ae9d08
|
||||
)
|
||||
self._chroma_ephemeral = bool(use_ephemeral) if use_ephemeral is not None else env_ephemeral
|
||||
|
||||
@@ -90,13 +80,8 @@ class SchemaIndexer:
|
||||
)
|
||||
|
||||
logger.info(
|
||||
<<<<<<< HEAD
|
||||
f"[OK] 初始化SchemaIndexer({backend_desc}): collection={self.collection_name}, "
|
||||
f"count={self.collection.count()}"
|
||||
=======
|
||||
f"[OK] 初始化SchemaIndexer(Chroma持久化): collection={self.collection_name}, "
|
||||
f"path={self.persist_dir}"
|
||||
>>>>>>> 9369563942d8de442508613191670123d5ae9d08
|
||||
)
|
||||
|
||||
def ensure_index_for_schema(
|
||||
@@ -255,7 +240,14 @@ class SchemaIndexer:
|
||||
"rank": idx + 1,
|
||||
})
|
||||
|
||||
logger.debug(f"检索 '{query[:50]}...' -> 找到{len(formatted)}个相关表(阈值={score_threshold})")
|
||||
top = [(x["table_name"], round(float(x.get("score", 0.0)), 4)) for x in formatted[:15]]
|
||||
logger.info(
|
||||
"Schema 向量检索: query_chars=%s 命中=%s(阈值=%s)top=%s",
|
||||
len(query or ""),
|
||||
len(formatted),
|
||||
score_threshold,
|
||||
top,
|
||||
)
|
||||
return formatted
|
||||
|
||||
def search_by_table_names(self, table_names: List[str]) -> List[Dict]:
|
||||
@@ -332,9 +324,5 @@ class SchemaIndexer:
|
||||
"total_columns": total_columns,
|
||||
"avg_columns": total_columns / count if count > 0 else 0,
|
||||
"persist_dir": str(self.persist_dir),
|
||||
<<<<<<< HEAD
|
||||
"chroma_mode": "memory" if self._chroma_ephemeral else "persistent",
|
||||
=======
|
||||
"chroma_mode": "persistent",
|
||||
>>>>>>> 9369563942d8de442508613191670123d5ae9d08
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user