Skip to content

feat: Adds Vector Search With Qdrant - #15

Open
Anush008 wants to merge 2 commits into
openJiuwen-ai:developfrom
Anush008:develop
Open

feat: Adds Vector Search With Qdrant#15
Anush008 wants to merge 2 commits into
openJiuwen-ai:developfrom
Anush008:develop

Conversation

@Anush008

@Anush008 Anush008 commented Jul 22, 2026

Copy link
Copy Markdown

Paired: GitHub #15GitCode !134

Hi 👋

Description

This PR adds support for using Qdrant as a vector search provider.

Qdrant is an open-source vector search engine built for high-performance and massive scale.

Testing

I've unit tested this integration against a local Qdrant instance.

Setup

You can run Qdrant with

docker run -p 6333:6333 qdrant/qdrant

The dashboard is accessible at http://localhost:6333/dashboard

You can then set VECTOR_STORE_TYPE=qdrant, VECTOR_QDRANT_URL=http://localhost:6333.

@CLAassistant

CLAassistant commented Jul 22, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@openjiuwen-ci-bot

Copy link
Copy Markdown

Hi @Anush008, thanks for your contribution!

This pull request is currently waiting for the CLA Assistant check to pass before the CI process can continue.

Please follow the signing link shown by CLA Assistant on this PR. If you have already signed the CLA but the check is still failing, please make sure that all email addresses used in your commits are added to and verified on your GitHub account.

After updating your email settings or signing the CLA, please click Recheck in the CLA Assistant comment/check so the status can be refreshed.

Once the CLA Assistant check passes, CI will continue automatically.

@openjiuwen-collaboration-bot

openjiuwen-collaboration-bot Bot commented Jul 22, 2026

Copy link
Copy Markdown

head_sha: ff588c0fdbdf621e9d29055c113346aee62956cd

变更摘要

本PR为 agent-memory 项目新增了 Qdrant 向量数据库后端支持。核心变更包括:实现完整的 QdrantVectorStore 适配器类(继承 BaseVectorStore),支持集合 CRUD、向量搜索、文档增删改查、schema 迁移及多种距离度量(COSINE / L2 / IP 等);将 Qdrant 注册为内置向量存储后端,并在服务工厂、环境变量配置和依赖声明中完成集成。

主要改动

  • 新增 QdrantVectorStore 适配器:新增 qdrant_vector_store.py(482行),实现 BaseVectorStore 的全部抽象方法,包括 create_collectionsearchadd_docslist_docsupdate_doc_fieldsdelete_docs_by_ids/delete_docs_by_filtersget_schemaupdate_schema 等,并利用集合内持久化元数据点(_META_KEY)保存 schema 与距离度量信息,确保跨会话一致性。
  • 注册为内置向量存储:在 __init__.py 中将 "qdrant" 加入 _BUILTIN_VECTOR_STORE_NAMES 集合,并在 _resolve_builtin 中新增 qdrant 分支以返回 QdrantVectorStore 实例。
  • 服务工厂集成:在 store_factory.pycreate_vector_store 函数中添加 qdrant 分支,读取 VECTOR_QDRANT_URLVECTOR_QDRANT_API_KEYVECTOR_QDRANT_COLLECTION_PREFIXVECTOR_QDRANT_PREFER_GRPCVECTOR_QDRANT_TIMEOUT 环境变量来构造 QdrantVectorStore
  • 依赖与配置声明:在 pyproject.toml 中新增 qdrant 可选依赖组(qdrant-client>=1.10.0,<2.0.0)并加入 all-vector;在 .env.example 中添加 Qdrant 相关环境变量注释说明。
  • 完整测试覆盖:新增 test_qdrant_vector_store.py(245行),覆盖工厂解析、并发创建集合安全性、元数据恢复、与 SimpleMemoryIndex 集成、公共接口(CRUD + 搜索 + 过滤)、以及 schema 迁移成功与回滚场景。

@openjiuwen-collaboration-bot

openjiuwen-collaboration-bot Bot commented Jul 22, 2026

Copy link
Copy Markdown

head_sha: ff588c0fdbdf621e9d29055c113346aee62956cd

代码审查

我已全面审查了所有 10 个变更文件。以下是审查总结:

审查结论

发现汇总

  • P2: 1 个
  • P3: 2 个
  • P0/P1: 0 个

各文件审查结果

文件 结果
README.md 无问题(仅文档更新,添加 Qdrant 至支持列表)
README.zh.md 无问题(仅文档更新,添加 Qdrant 至支持列表)
docs/en/API Docs/memory_server.md 无问题(仅文档更新,添加 Qdrant 配置表)
docs/zh/API文档/memory_server.md 无问题(仅文档更新,添加 Qdrant 配置表)
jiuwen_memory/foundation/store/__init__.py 无问题(将 qdrant 加入内置集合和解析函数)
jiuwen_memory/foundation/store/vector/qdrant_vector_store.py 2 个问题search/add_docs/list_docs 元数据缺失时 KeyError 崩溃(P2);update_schema 回滚可能掩盖原始异常(P3)
jiuwen_memory/server/.env.example 无问题(添加 Qdrant 配置模板)
jiuwen_memory/server/store_factory.py 1 个问题VECTOR_QDRANT_TIMEOUT 非法值时 float() 抛出无上下文 ValueError(P3)
pyproject.toml 无问题(添加 qdrant-client>=1.10.0,<2.0.0 可选依赖,官方库,无供应链风险)
tests/.../test_qdrant_vector_store.py 无问题(测试覆盖全面,含并发创建、元数据恢复、schema 迁移和回滚场景)

整体风险评估

低风险。新增的 Qdrant 向量存储适配器代码质量良好,核心逻辑(filter、search、schema 管理、迁移回滚)设计合理,测试覆盖充分。发现的 3 个问题均为边缘场景下的健壮性不足:

  • 元数据缺失时的 KeyError 崩溃仅在外部手动操作 Qdrant 或初始化中断后触发,正常流程不受影响;
  • timeout 转换异常和回滚异常掩盖问题在主流程中不会显现。

建议在合并前至少修复 P2 的元数据缺失防护,以保持与 get_schema 方法一致的错误处理语义。其余两个 P3 可按排期处理。

类型 数量
🔴 阻塞 0
🟡 建议 2

💬 仅评论

@openjiuwen-collaboration-bot

Copy link
Copy Markdown

head_sha: ff588c0fdbdf621e9d29055c113346aee62956cd

任务名称 结果 日志操作
静态检查 ❌FAILED 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A

Comment thread jiuwen_memory/server/store_factory.py Outdated
Comment thread jiuwen_memory/foundation/store/vector/qdrant_vector_store.py Outdated
@openjiuwen-collaboration-bot

Copy link
Copy Markdown

head_sha: 482187bd72ca8b6d179388d1452c855a6b17e004

任务名称 结果 日志操作
静态检查 ❌FAILED 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A

@openjiuwen-collaboration-bot

Copy link
Copy Markdown

head_sha: ee28fdbbbbedf2f276d60c4b0afc2c7e2ae4912b

任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A

@openjiuwen-collaboration-bot

Copy link
Copy Markdown

head_sha: 0cfc903ca2ed70b552d053b7fb0856f251503a3c

任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A

@Anush008

Anush008 commented Aug 7, 2026

Copy link
Copy Markdown
Author

Hi @openjiuwenai
Just bumping this PR. Please take a look when possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants