pgvector 相似性搜索错误相似性搜索失败: float object is not subscriptable
- 错误现象
执行 RAG 向量检索时出现:
相似性搜索失败: 'float' object is not subscriptable
同时日志:
Building prefix dict from the default dictionary ...
Loading model from cache ... jieba.cache
其中:
jieba 日志属于正常加载提示,不是异常原因。
真正异常来自 pgvector 相似度查询。
2. 错误定位
错误发生在:
(RAGEmbedding.embedding.op('<=>')(query_embedding)).label('distance')
这里。
原代码:
query = (
select(
RAGEmbedding,
Segment,
RAGDocument,
(
RAGEmbedding.embedding.op('<=>')
(query_embedding)
).label('distance')
)
)
解决方案
使用 pgvector 官方提供的方法:
修改前
RAGEmbedding.embedding.op('<=>')(query_embedding)
修改后
RAGEmbedding.embedding.cosine_distance(
query_embedding
)
完整:
distance = (
RAGEmbedding.embedding
.cosine_distance(query_embedding)
.label("distance")
)
学而不思则罔,思而不学则殆!