加入日志管理

This commit is contained in:
陈辅元
2026-04-16 10:53:10 +08:00
parent 284e02f41c
commit 695356a496
19 changed files with 582 additions and 181 deletions
Binary file not shown.
+9 -21
View File
@@ -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
}