pgvector 相似性搜索错误相似性搜索失败: float object is not subscriptable
  1. 错误现象

执行 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")
)