代码向量搜索(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 了解详情。
