首页/AI/RAG 与向量库速查/pgvector 与 SQL 混合检索
本包目录(229 条)
架构与流程30 条解析与切分33 条Embedding 与检索50 条
向量数据库49 条
重排与生成32 条评估与优化35 条

pgvector 与 SQL 混合检索

pgvector 的独特优势是向量近邻与关系条件在同一句 SQL:WHERE 过滤、JOIN 业务表、全文检索 tsvector 都能与向量排序组合,用一条语句完成多条件召回。

RAG 与向量库速查AI更新于 2026-10-12

过滤 + 向量排序

过滤 + 向量排序
SELECT c.id, c.content
FROM kb_chunks c
JOIN kb_docs d ON d.id = c.doc_id
WHERE d.status = 'published'
  AND d.updated_at >= now() - interval '90 days'
ORDER BY c.embedding <=> $1
LIMIT 10;

全文检索 + 向量两段式

全文检索 + 向量两段式
WITH kw AS (
  SELECT id FROM kb_chunks
  WHERE to_tsvector('simple', content) @@ plainto_tsquery('simple', $2)
  LIMIT 50
)
SELECT c.id FROM kb_chunks c
WHERE c.id IN (SELECT id FROM kw)
ORDER BY c.embedding <=> $1 LIMIT 10;
过滤条件的选择性决定执行计划:高选择性过滤先行、再向量排序通常更划算。

易错点

  • 把向量排序写在子查询内再过滤,语义上过滤在排序之后执行
  • 中文全文检索未配分词扩展,tsvector 按空格切分几乎不命中

数据来源与参考

  • pgvector README(Hybrid Search)
  • PostgreSQL 官方文档(全文检索 / EXPLAIN)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌