外观
PostgreSQL FTS + pgvector 如何混合检索?分数可以直接相加吗?
项目版本说明
这些问答整合历史设计与实现资料;当前 main 分支 README 以工作包描述建设状态。具体能力、实验数据与设计目标的边界见项目状态与证据。
标准回答
关键词检索擅长精确词和标识符,向量检索补充同义表达,两路候选去重后再统一排序。两种原始分数不天然处于同一尺度,不能未经校准就任意相加。时间与可信度可以影响顺序,但不应把无效或无权的内容重新排回来。
通俗例子
用户问某个错误码时,关键词路线可能更有优势;用户换种说法描述同一决策时,向量路线更有帮助。把两路相关内容放在一起评估,才能判断融合是否真的改善结果。
深入解释
**先区分召回与排序:**分别解释两路怎么找候选、各取多少、何处合并;最后输出 Top-5 与每路候选预算不是同一个参数。
**说明融合选择:**可采用经验证的归一化加权或排名融合等思路,但项目具体用了什么必须核实;不能把 RRF 这类候选方案写成既成事实。
**解释新旧与可信信号:**旧内容不一定错误,新内容不一定可靠。衰减和可信信号需要结合记忆类型及标签评估,不能以时间取代来源有效性。
追问与回答
关键词一路没召回怎么办?
定义单路空结果时的融合行为,并观察查询类型,不应让缺失一路直接导致全部无结果。
为什么不只用向量?
精确标识符、专业术语和语义近但事实不同的情况需要专门评估,向量相似不是事实相同。
易混淆点
PostgreSQL 具备 FTS 不代表默认配置就能满足项目中文检索需求。
进一步举证
- 补齐 FTS 分词或词典、距离度量、融合公式与候选预算。
- 准备精确词、同义问法及过时结论三类查询对照。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
resume-R28