AttributeError: ‘OBConnection’ object has no attribute ‘get_scores’

该报错发生在 RAGFlow v0.27.0 配置 SeekDB(OceanBase)作为文档引擎时,向量检索 SQL 能正常返回候选块,但检索流水线在提取向量分数阶段因 OBConnection 缺少 get_scores 方法而中断。优先排查当前 RAGFlow 版本是否已包含 SeekDB 适

快速结论:该报错发生在 RAGFlow v0.27.0 配置 SeekDB(OceanBase)作为文档引擎时,向量检索 SQL 能正常返回候选块,但检索流水线在提取向量分数阶段因 OBConnection 缺少 get_scores 方法而中断。优先排查当前 RAGFlow 版本是否已包含 SeekDB 适配器的分数提取补丁。

适用环境:RAGFlow v0.27.0;SeekDB(最新版);环境变量 DOC_ENGINE=seekdb。Issue 中未提及具体的操作系统、Python、CUDA 或显卡型号,故不补充。

最快修复方案:升级到包含该修复的 RAGFlow 版本(对应修复及回归测试已在关联 PR 中提交)。若暂不能升级,可优先尝试将 DOC_ENGINE 切换为其他受支持的文档引擎。

注意事项:该 Issue 仅由维护者确认“已修复”,但未在评论中给出具体的修复版本号;升级前请确认目标版本是否确实包含 SeekDB 适配器的 get_scores 实现。

问题场景

在 RAGFlow v0.27.0 中配置 DOC_ENGINE=seekdb 后,上传并解析包含嵌入字段(如 q_1024_vec)的文档,执行向量检索或混合检索时触发。底层 SeekDB 查询 SQL 能正常返回候选块,但后续从 rag/nlp/search.py_knn_scores() 调用 OBConnection.search() 返回 SearchResult(chunks=[...]) 后,提取分数阶段抛错,导致向量检索、混合检索及 Chat RAG 应答均无法完成。

报错原文

AttributeError: 'OBConnection' object has no attribute 'get_scores'

原因分析

可能原因:SeekDB/OceanBase 适配器返回的 chunk 字典中确实包含 id_score 字段,但 OBConnection 类未实现其他文档存储适配器所提供的分数提取辅助方法 get_scores。检索流水线在取得 chunk 列表后需要调用该方法解析分数,缺失该方法导致整个检索链路中断。根据 Issue 描述,这属于适配器实现不完整而非查询语句或数据问题。

环境排查

  • 确认 RAGFlow 版本是否为 v0.27.0 或更早版本(该版本已知缺少 SeekDB 适配器的 get_scores 实现)。
  • 确认 DOC_ENGINE 环境变量为 seekdb
  • 检查 SeekDB/OceanBase 服务端是否能正常执行向量检索 SQL 并返回包含 _score 的结果。
  • 查看 RAGFlow 相关日志,确认报错是否发生在 rag/nlp/search.py_knn_scores() 调用链中。
  • 如手动修改过 RAGFlow 源码或安装过自定义补丁,请检查 OBConnection 类中是否包含 get_scores 方法定义。

解决步骤

  1. 首先备份当前 RAGFlow 配置和数据(尤其是向量索引)。
  2. 检查 RAGFlow 官方 Release 页面或 GitHub 仓库,确认是否有包含 SeekDB 适配器 get_scores 修复的新版本发布;Issue 评论中维护者已表示“该问题已修复”。
  3. 若有新版本,升级 RAGFlow 到包含修复的版本,然后重启服务并重新执行向量/混合检索。
  4. 若无法升级,可优先尝试将 DOC_ENGINE 临时切换为其他受支持的文档引擎,以验证问题是否仅出现在 SeekDB 适配器。
  5. 若需要继续使用 SeekDB 且无法升级,可临时在本地源码的 OBConnection 类中手动实现 get_scores 方法(参照其他文档存储适配器的实现,从 chunk 字典中提取 _score 字段)。但此操作有风险,后续升级可能会被覆盖,且未经过 RAGFlow 官方回归测试验证。
  6. 修复后清理相关缓存(如有),重新运行之前失败的向量检索或混合检索场景。

验证方法

DOC_ENGINE=seekdb 配置下,重新执行之前触发报错的向量检索或混合检索操作,确认不再出现 AttributeError: 'OBConnection' object has no attribute 'get_scores',且检索结果中的分数能正常返回并用于排序。同时建议执行一次完整的多轮检索测试,确保 Chat RAG 应答也能正常完成。

参考来源

infiniflow/ragflow #18873

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 20751

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注