fix: T21 真库联调三坑——①Milvus Lite 文件库跨进程重开 collection released, ensure_collection 补显式 load(单测同进程覆盖不到); ②faiss 不支持中文路径(faiss C++ IO), 本机 .env 改英文绝对路径 C:/Users/YUAN/.jinrong/milvus/, .env.example 加警告; ③build_kb 直跑 sys.path 引导项目根(同 rebuild_alerts 先例); 真库 24 块入库+检索验收通过(基金申购 Top3 命中申赎规则, 溯源完整), 425 绿
This commit is contained in:
@@ -18,6 +18,7 @@ NEO4J_USER=neo4j
|
||||
NEO4J_PASSWORD=
|
||||
|
||||
# Milvus Lite
|
||||
# 注意:路径含中文会触发 Milvus Lite(faiss) 文件 IO 失败,Windows 中文用户目录请改纯英文绝对路径
|
||||
MILVUS_URI=./data/milvus.db
|
||||
|
||||
# Ollama Embedding
|
||||
|
||||
@@ -64,20 +64,26 @@ def _kb_schema(dim: int):
|
||||
|
||||
|
||||
def ensure_collection(client: MilvusClient, dim: int | None = None) -> None:
|
||||
"""幂等建集合(exists 跳过;不存在则建 schema + 向量索引)。
|
||||
"""幂等建集合 + 确保加载(exists → load;不存在 → 建 schema + 索引 + load)。
|
||||
|
||||
索引 AUTOINDEX + COSINE:Milvus Lite 支持 AUTOINDEX(自动选型),
|
||||
COSINE 语义直观且 bge-m3 未归一化时也正确。dim 缺省取 settings.embed_dim,
|
||||
与 embedding 服务同源——两边配置天然一致,不必各配一份。
|
||||
|
||||
load 口径(2026-09-07 实测坑):Milvus Lite 文件库**跨进程重开**后
|
||||
collection 处于 released 状态,直接 search 报 MilvusException(code=101);
|
||||
单测同进程覆盖不到,须每次 ensure 时显式 load_collection。
|
||||
"""
|
||||
dim = dim or settings.embed_dim
|
||||
if client.has_collection(COLLECTION_NAME):
|
||||
client.load_collection(COLLECTION_NAME)
|
||||
return
|
||||
index = client.prepare_index_params()
|
||||
index.add_index(field_name="embedding", index_type="AUTOINDEX", metric_type="COSINE")
|
||||
client.create_collection(
|
||||
COLLECTION_NAME, schema=_kb_schema(dim), index_params=index
|
||||
)
|
||||
client.load_collection(COLLECTION_NAME)
|
||||
|
||||
|
||||
def insert_chunks(client: MilvusClient, rows: list[dict]) -> int:
|
||||
|
||||
@@ -23,6 +23,10 @@ import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# 项目根加入 path(直跑脚本时 sys.path[0] 为脚本目录,须自行引导;同 rebuild_alerts)
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
# 允许 doc_type 白名单(03-milvus-collections.md §2.1 冻结枚举)
|
||||
DOC_TYPES = ("prospectus", "fee", "rule", "risk")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user