代码向量搜索服务

一个基于ChromaDB和Intel OpenVINO加速的句子转换器嵌入的本地语义代码索引服务,用于项目代码的语义搜索。

  • by wgawan
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 wgawan/mcp-code-vector--search

使用说明

代码向量搜索(MCP服务器)

一种模型上下文协议(MCP)服务器,使用ChromaDB和Intel OpenVINO加速的句子转换器嵌入来构建本地语义代码索引。它会监视你的项目,分块源文件,尊重 .gitignore,并向MCP客户端公开语义搜索工具。

特性

  • ChromaDB支持的矢量存储,具有持久存储和自动膨胀缓解功能。
  • 针对Intel CPU/GPU的OpenVINO加速句子转换器嵌入(回退到PyTorch)。
  • Gitignore感知索引,并通过文件监视实时更新。
  • 使用文件/行元数据对文档进行分块,以获得精确的结果。
  • 面向MCP客户端的工具: semantic_search, get_index_stats, reindex_project.

快速入门(Docker)

docker build -t code-vector-search .
PROJECT_ROOT=/path/to/your/code ./run-docker.sh
  • 项目以只读方式装载在 /project;矢量索引持续到 /path/to/your/code/.vector-index.
  • 集 DEBUG=1 从容器中读取服务器stderr日志。

不使用Docker运行

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
PROJECT_ROOT=/path/to/your/code PERSIST_DIR=.vector-index python server.py

配置

  • PROJECT_ROOT (默认值 /project):要索引的目录。
  • PERSIST_DIR (默认值 /vector-index):ChromaDB存储索引的位置。
  • FORCE_REINDEX (true/false):启动时强制进行干净重建。
  • CHUNK_SIZE (默认值 800):每个块的目标字符;较大的值会减少块并加快索引速度。
  • EMBED_BATCH_SIZE (默认值 64):句子转换器编码批大小。
  • EMBED_MODEL_NAME (默认值 all-MiniLM-L6-v2):嵌入SentenceTransformers的模型名称。
  • INDEX_BATCH_CHUNKS (默认值 512):在完全索引期间,每个Chroma添加批次的块数。
  • DEBUG (与 run-docker.sh):显示stderr日志,而不是将其静音。

性能提示

  • 这些默认值针对4核32GB机器进行了调整;如果你看到记忆压力,请调低。
  • 增加 EMBED_BATCH_SIZE (例如。, 96)如果你有足够的净空;如果你看到OOM,请降低它。
  • 对于非常大的回购,在发生重大变化后更喜欢新的指数,以避免HNSW膨胀。
  • 型号选择: all-MiniLM-L12-v2 (质量越高,速度越慢), multi-qa-MiniLM-L6-cos-v1 (QA风格的查询), bge-small-en-v1.5 (更快、更小)。

测试

运行嵌入和Chroma集成检查:

python test_embedding.py

贡献

看 CONTRIBUTING.md 了解设置、样式和拉取请求指南。A. CODE_OF_CONDUCT.md 适用于所有社区空间。

安全

请审阅 SECURITY.md 如何报告漏洞。

许可证

根据MIT许可证获得许可。看 LICENSE 了解详情。