跳转到内容

LLM、搜索与检索工程

LLM、搜索与检索工程解决的是“如何从不断变化、结构不一、权限不同的资料中找到足以支持具体Claim的证据”。生成只是最后一段;更大工作量在语料摄取、解析、去重、版本、分块(Chunking)分块Chunking把来源文档切成可索引、可检索且仍能定位回原文的证据单元。打开术语条目 →、Sparse/Dense Retrieval、重排序(Reranking)重排序Reranking对第一阶段召回的候选使用更精细但通常更昂贵的模型重新排序。打开术语条目 →、权限过滤、上下文打包、引用(Citation)引用Citation把一个可核查结论连接到具体来源身份和原文位置的可验证指针。打开术语条目 →无答案(No-answer)无答案No-answer当证据不足、冲突或越过授权边界时,系统明确拒绝生成无依据结论的终态。打开术语条目 → 和评测。

典型失败:

  • 文档已更新,索引仍回答旧规则;
  • 解析器丢掉表格标题,Chunk缺乏条件;
  • Dense召回主题相关但规则相反的文本;
  • Sparse召回精确编号,却错过同义问题;
  • Relevant Chunk在Top-20,却被Context Budget丢掉;
  • 引用链接相关但不支持Claim;
  • 权限过滤太晚,私有Chunk进入Prompt或缓存;
  • 评测只包含有答案问题,系统学会总是回答;
  • 一个总分掩盖某类查询完全失败。

直接前置包括ML实验、LLM基础、数据可靠性和检索Grounding。生产综合项目提供API、版本、Artifact、SLO和发布Gate;安全模块提供ACL、注入与数据流边界。

Content Sources
↓ connector / parser / normalization
Document Registry ── identity/version/ACL
Chunk Pipeline ── chunker version / source span
Sparse Index + Dense Index
Query Service ── ACL → retrieve → merge → rerank → pack
Answer/Extraction ── Claim → Citation validation → no-answer
Evaluation + Replay + Index Release Gate

离线和在线两个平面分别版本化。查询响应引用确切 corpusVersion,不能混合 generation。

文档记录稳定ID、内容版本、Hash、来源URL、解析器版本、ACL和删除状态。变更检测后构建新Chunk;删除要从索引和缓存传播。发布新generation前验证文档/Chunk计数、抽样查询和权限字段。

HTML、PDF、Markdown、表格和代码块结构不同。解析失败可能比模型选择更影响质量。保存原始到规范文本的Span映射,让Citation回到来源。对无法解析、空文档、乱码和重复内容有隔离报告。

比较结构切分、固定窗口、Overlap、父子Chunk和Query-time Expansion。指标不只看Recall,还看重复率、平均Token成本、Citation Span完整性和Top-k多样性。

Sparse处理精确术语、数字、标识;Dense覆盖同义和语义;Hybrid按可复现融合。每个Retriever输出独立排名与版本,便于归因。不要直接相加不同尺度原始分数。

保存候选前后排名、分数、模型/规则版本。负例要包含主题相近、条件相反的Hard Negative。若召回没有相关Chunk,Reranker不承担责任。

ACL在Retriever查询时生效;Index、Cache和Trace按Scope隔离。权限变更触发索引/缓存更新。外部响应不泄露“有私有文档但你无权访问”。

按预算选择Evidence:去重、每文档上限、必要标题、条件句完整、预留回答Token。记录丢弃原因。Context Window增大不能替代检索和排序。

答案拆原子Claim;每个Claim绑定文档版本、Chunk、Span和Quote Hash。支持“原文事实”和“由多来源推导”两类,推导保存规则。引用失效时不静默跳转。

评测集包含语料缺失、权限过滤、证据冲突、低置信和问题超范围。无答案是结构状态。冲突时展示来源差异或转人工,不让模型随意选一个。

至少报告:前K召回率(Recall@k)前K召回率Recall@k对每个查询检查前K个候选是否覆盖全部或所需相关项的检索指标。打开术语条目 →平均倒数排名(Mean Reciprocal Rank, MRR)平均倒数排名Mean Reciprocal Rank, MRR对每个查询取第一个相关结果排名的倒数,再在查询集合上求平均。打开术语条目 →、Claim Support、Citation Validity、正确拒答、错误回答。按查询类型、语言、文档来源、长度、更新时间、ACL切片;每个指标带分母。

构建一个公开技术资料检索系统:

  • 固定10–50篇公开Fixture文档,含版本更新、表格、重复和无答案材料;
  • Document Registry与两个corpus generation;
  • 结构化Chunker;
  • Sparse基线与一个可选本地Dense适配器;
  • Hybrid merge与规则Reranker;
  • ACL Scope;
  • Claim-Citation Artifact;
  • 有答案、无答案、冲突、旧版本、权限Case;
  • Offline Evaluation CLI与Index Diff。

不需要大数据量。重点是能证明每一层怎样影响最终Claim。

document-manifest.json
parser-report.json
chunk-manifest.ndjson
index-generation.json
query-traces/
retrieval-candidates.ndjson
rerank-diffs.json
context-packing-report.json
claims-and-citations.json
no-answer-verdicts.json
evaluation-cases.json
metrics-with-denominators.json
index-release-gate.json

常见“看起来会、实际不会”的缺口

Section titled “常见“看起来会、实际不会”的缺口”
看起来会实际缺口
接了向量数据库无语料版本、解析质量和ACL
Top-k能返回相关文本不测Recall、Hard Negative和无答案
答案有来源链接引用不绑定Claim与Span
调大Chunk/Context重复、预算和条件截断更严重
使用Hybrid分数尺度混乱、无法解释融合
有Reranker没保存召回候选,失败无法归因
做了离线评测Test反复调参、Case没有版本
更新索引很快查询混用新旧generation,历史结果不可复查
  1. 文档身份、版本、ACL和Parser Evidence。
  2. 结构Chunk与Span映射。
  3. Sparse基线和可手算Recall/MRR。
  4. Dense与Hybrid实验。
  5. Reranker与Hard Negative。
  6. Context Packing和Token预算。
  7. Claim-Citation、冲突和No-answer。
  8. 评测切片、Replay和Index Release Gate。
  9. 最后接入生成模型,保留确定性抽取基线。
能力可观察产物
数据/索引工程Registry、Parser、Chunk、Generation发布
信息检索Sparse/Dense/Hybrid、Rerank、Recall/MRR
LLM GroundingContext Packing、Claim、Citation和No-answer
实验方法Case版本、切片、Baseline和Index Diff
安全与权限ACL前置、缓存隔离、注入边界
可靠性增量更新、回滚、Stale Index对账
产品质量可核查答案、冲突展示、无答案体验