实战案例
三个可运行的方向:Chroma 吃本地 Markdown、在已有 Postgres 上加 pgvector、Qdrant 的过滤并预告混合检索。嵌入函数沿用 Embeddings 的 embed_openai 或 embed_ollama(CPU 即可)。Python 3.10+。
切块用 切块 的 window_split。下面为了篇幅用短文件、整篇当一块;真实 FAQ 请按标题再切。
案例 1:Chroma + Markdown FAQ
目标: 对 faq/*.md 问答,答案必须含语料里的虚构条款。
faq/refund.md:
faq/hours.md:
验证: 问 KH-8842 / 7 日;再问「股价多少」(应拒绝)。用 评估 的 hit_at_k 检查 refund-0。
案例 2:已有 Postgres + pgvector
假设表 articles(id, title, body, org_id) 已有数据。Postgres 基础见 PostgreSQL。
org_id = 42 必须在应用层绑定当前租户,不要让模型选。回填可夜间跑;改 body 后把 embedding 置 NULL 即可重嵌。
案例 3:Qdrant 过滤 + 混合检索预告
先起服务(见 Qdrant),再按部门过滤。稀疏通道只作预告,先把 filter 的 hit@k 做稳。
混合预告: collection 同时配置 dense + sparse named vectors,用 Prefetch + FusionQuery(RRF) 合并(代码骨架在 Qdrant 章)。条款号 HR-10 往往要靠关键词;「年假」同义靠向量。加稀疏之前对比「只 dense + dept 过滤」的 hit@k。
三个案例怎么验收
下一步可以把同一套块接到 LangChain RAG 或 Dify 知识库,原则不再变。