问答记录
pgvector 语义搜索时 embedding 字段为 NULL 的过滤策略
创建于 2026/7/15更新于 2026/7/15
pgvector
Semantic Search
PostgreSQL
踩坑
## 问题描述
当 knowledge 记录的 embedding 字段为 NULL 时,执行向量相似度查询会返回错误或意外结果。
## 根本原因
pgvector 的 <=> 运算符无法处理 NULL 值。
## 解决方案
在 $queryRaw 中添加 embedding IS NOT NULL 条件过滤:
```sql
SELECT *, 1 - (embedding <=> ${queryEmbedding}::vector) as similarity
FROM "knowledge"
WHERE embedding IS NOT NULL
AND 1 - (embedding <=> ${queryEmbedding}::vector) >= ${threshold}
ORDER BY embedding <=> ${queryEmbedding}::vector
LIMIT ${limit}
```
关联知识资产
QA
资产 ID: 73e083c8-a2af-4170-a054-c7be5a5655b2