ChromaDB代码RAG助手
此存储库现在提供了两个小型命令行助手:一个将源代码目录索引到 色度数据库,以及使用检索增强生成(RAG)技术持久化收集的其他查询。所有内容都保持在本地——文件被分块、嵌入并存储在磁盘上——您可以选择让远程Ollama服务器从检索到的上下文中合成自然语言答案。如果没有LLM,查询工具仍然会显示最相关的块,因此您可以手动回答。
安装
python -m venv .venv
.\.venv\Scripts\activate # PowerShell on Windows
pip install -r requirements.txt用法
有两个入口点:
chromadb_code_rag.py-处理摄取/索引。query_tool.py-执行检索(以及可选的LLM合成)。list_chroma_rows.py-检查存储在集合中的原始行/文档。
1.取一个目录
python chromadb_code_rag.py path\to\your\repo --reset重要标志:
--db-dir:存储持久数据库的位置(默认.chromadb/).--collection:数据集的唯一名称(默认值code-rag).--extensions:以逗号分隔的要包含的文件扩展名列表。默认值包括流行语言和json,yaml,toml,md.--chunk-lines/--chunk-overlap:控制块大小和行重叠(默认值40/10)。--max-file-mb:跳过非常大的文件(默认值2MB)。--reset:在重新摄入之前丢弃现有的集合。
2.问一个问题
python query_tool.py "How is authentication handled?"旗帜:
--top-k:要检索的块数(默认值5).--ollama-model:当提供时(例如。,llama3)脚本将检索到的上下文发送到Ollama服务器进行答案合成。--ollama-url:Ollama实例的基本URL(默认http://localhost:11434).需要时将其指向远程主机,例如。http://10.0.0.5:11434.--ollama-max-tokens:Ollama回应的上限(num_predict,默认值400).
如果你忽略了 --ollama-model,该工具会打印排名后的块以及在代码库中查找位置的快速摘要。这仍然为您提供了一个完全离线的有用检索工作流。
3.检查存储行
python list_chroma_rows.py --limit 10 --show-docs旗帜:
--limit/--offset:对存储的行进行分页(默认20/0)。--show-docs:除了元数据外,还包括实际的块文本。--json:发出一个可以导入的JSON blobjq或其他工具。
示例流程
# 1. Index the repo (only needs to happen when files change)
python chromadb_code_rag.py . --chunk-lines 60 --chunk-overlap 15 --reset
# 2. Ask questions locally
python query_tool.py "Where are database connections created?" --top-k 3
# 3. (Optional) Let a remote Ollama host draft an answer
python query_tool.py --ollama-url localhost:11434 --ollama-model gpt-oss:20b-cloud "Which are the cities that are in this simulation?"运作原理
- 分块 -文件被拆分为可配置行数的重叠窗口,以便嵌入捕获足够的上下文。
- 嵌入 -使用ChromaDB
DefaultEmbeddingFunction,它捆绑了一个轻量级的SentenceTransformer,不需要外部服务。 - 存储 -块存在于持久的Chroma集合中,因此只有在代码发生更改时才能摄取。
- 检索 -查询嵌入了相同的模型;最近邻提供最佳匹配的代码片段以及文件/行引用。
- 合成(可选) -将检索到的上下文发送到Ollama服务器以获取完整的自然语言答案,或自己查看代码片段。
因为每个脚本都是一个单独的、作用域良好的Python文件,所以你可以很容易地调整它们——例如交换另一个嵌入模型,过滤其他文件类型,或者将它们连接到更大的自动化或CI管道中。
MCP服务器(实验)
该回购还提供 主控程序 服务器(chromadb_mcp_server.py)建造于 FastMCP。它将现有的Chroma工作流作为一流的MCP工具公开,因此Claude等桌面客户端可以直接从本地数据库请求上下文。
可用工具:
list_collections--枚举持久的Chroma集合及其行数。query_codebase--嵌入一个自然语言问题,并返回最匹配的块和一个快速摘要。list_rows--检查集合中的原始行/文档(有助于调试摄入的内容)。
运行服务器
- 安装依赖项(
pip install -r requirements.txt). - 确保您已经通过以下方式摄入了目标存储库
chromadb_code_rag.py. - 启动服务器:
python chromadb_mcp_server.py- 将MCP兼容客户端指向脚本。例如,在
claude_desktop_config.json:
{
"mcpServers": {
"code-rag": {
"command": "python",
"args": [
"C:/absolute/path/to/mcp_example/chromadb_mcp_server.py"
]
}
}
}Claude(或另一个MCP客户端)现在可以呼叫 list_collections, query_codebase,以及 list_rows 通过STDIO,检索与 query_tool.py 打印到控制台。
安装到Codex
将此添加到Codex的config.toml中
[mcp_servers.code_rag]
command = "/rag_mcp_example/.venv/Scripts/python.exe"
args = ["/rag_mcp_example/chromadb_mcp_server.py"]