项目简介
pyLLMSearch是一个功能强大的RAG(检索增强生成)系统,旨在通过对本地文档集合进行索引和检索,为大型语言模型(LLM)提供增强的上下文信息。它支持多种文档格式、先进的搜索技术(如混合搜索、重排序、HyDE、多查询)、会话历史,并可以通过内置Web界面或标准的Model Context Protocol (MCP) 接口进行交互。
主要功能点
- 文档索引与管理: 快速解析并生成文档库的向量嵌入,支持增量更新,多种文档格式解析(PDF, Markdown, DOCX等)。
- 先进的检索技术: 支持混合搜索(结合稀疏和稠密向量)、假设文档嵌入(HyDE)、多查询等,以提高检索质量。
- 智能问答(RAG): 利用检索到的文档片段作为上下文,结合LLM生成高质量答案。
- 会话历史支持: 维护聊天历史,帮助LLM理解后续问题中的上下文依赖。
- MCP服务器接口: 通过JSON-RPC协议,提供标准的接口供MCP客户端(如Cursor, Windsurf, VSCode GH Copilot)访问文档资源和问答功能。
- 多种LLM支持: 可配置对接OpenAI兼容API、HuggingFace模型、LiteLLM+Ollama等。
安装步骤
- 克隆仓库:
git clone https://github.com/snexus/llm-search.git cd llm-search - 安装Python依赖:
pip install -e . - 创建 '.env' 文件:复制 '.env_template' 并根据需要配置API密钥(如 'OPENAI_API_KEY' 或 'GOOGLE_API_KEY')。
cp .env_template .env # 编辑 .env 文件 - 准备文档文件和配置文件:将你的文档放入指定文件夹,并参照 'sample_templates' 目录创建或修改你的RAG配置文件(文档配置和模型配置)。
- 创建文档索引:运行命令行工具生成文档的向量嵌入和索引。
请将 '/path/to/your_rag_config.yaml' 替换为你的实际RAG配置文件路径。python -m llmsearch index create -c /path/to/your_rag_config.yaml
服务器配置 (供MCP客户端使用)
MCP客户端连接pyLLMSearch MCP服务器时,需要配置服务器的启动命令及其参数。典型的配置信息如下,具体路径和参数需根据实际部署环境调整:
{ "name": "pyLLMSearch MCP Server", "command": "/path/to/your/python_environment/bin/python", "args": [ "-m", "llmsearch.api" ], "env": { "FASTAPI_RAG_CONFIG": "/path/to/your_rag_config.yaml", "FASTAPI_LLM_CONFIG": "/path/to/your_llm_config.yaml", "OPENAI_API_KEY": "your_openai_key_if_needed", "GOOGLE_API_KEY": "your_google_key_if_needed" } }
参数注释:
- '"name"': 服务器在客户端界面显示的名称。
- '"command"': 启动服务器的Python解释器路径。请替换为你的Python虚拟环境或系统Python路径(例如,'/usr/local/bin/python' 或 '/home/user/myenv/bin/python')。
- '"args"': 传递给Python解释器的参数。'-m llmsearch.api' 表示运行 'llmsearch.api' 模块作为 FastAPI 服务器,该服务器同时暴露了 MCP 接口。
- '"env"': 启动服务器进程所需的环境变量。
- '"FASTAPI_RAG_CONFIG"': 必需,指向RAG功能的YAML配置文件路径。请替换为你的配置文件路径。
- '"FASTAPI_LLM_CONFIG"': 必需,指向LLM模型的YAML配置文件路径。请替换为你的配置文件路径。
- 其他环境变量(如各种API密钥)根据你的模型配置需要添加。
基本使用方法
安装并创建索引后,按照上述“服务器配置”中的说明,将'command'和'args'以及必要的'env'配置到你的MCP客户端中。启动客户端并连接到配置的MCP服务器。客户端将能够通过pyLLMSearch MCP服务器进行文档搜索和问答。
你也可以通过命令行启动服务器 ('python -m llmsearch.api') 或启动内置的Web界面 ('python -m llmsearch interact webapp -c /path/to/your_doc_config_dir -m /path/to/your_model_config.yaml') 进行交互和测试。
信息
分类
AI与计算