项目介绍:GraphRAG4OpenWebUI
GraphRAG4OpenWebUI 是一个专为 Open WebUI 设计的 API 接口,旨在整合微软研究院的 GraphRAG(基于图的检索增强生成)技术。这一项目通过提供一个强大的信息检索系统,支持多种搜索模型,非常适合在开放网页用户界面中使用。
项目概述
GraphRAG4OpenWebUI 的主要目标是为 Open WebUI 提供一个便捷的接口,以利用 GraphRAG 强大的功能。它集成了三种主要的检索方法,并提供了一个综合的搜索选项,使用户能够获得全面而精确的搜索结果。
关键检索功能
-
本地搜索
- 使用 GraphRAG 技术在本地知识库中进行高效检索
- 适用于快速访问预定义的结构化信息
- 利用图结构提高检索的准确性和相关性
-
全局搜索
- 在更广泛的范围内搜索信息,超过本地知识库的范围
- 适用于需要更全面信息的查询
- 利用 GraphRAG 的全球上下文理解能力提供更丰富的搜索结果
-
Tavily 搜索
- 集成外部 Tavily 搜索 API
- 提供额外的互联网搜索能力,扩展了信息来源
- 适用于需要最新或广泛网络信息的查询
-
全模型搜索
- 结合以上三种搜索方法
- 提供最全面的搜索结果,满足复杂的信息需求
- 自动整合和排名来自不同来源的信息
支持本地的 LLM 和嵌入模型
GraphRAG4OpenWebUI 目前支持使用本地语言模型(LLM)和嵌入模型,增加了项目的灵活性和隐私性。具体支持的本地模型包括:
- Ollama:支持通过 Ollama 运行的各种开源 LLM,如 Llama 2、Mistral 等。可以通过设置
API_BASE
环境变量指向 Ollama 的 API 端点来进行配置。 - LM Studio:兼容由 LM Studio 运行的模型。通过配置
API_BASE
环境变量连接到 LM Studio 的服务。 - 本地嵌入模型:支持使用本地运行的嵌入模型,如 SentenceTransformers。可以通过设置
GRAPHRAG_EMBEDDING_MODEL
环境变量指定使用的嵌入模型。
这种对本地模型的支持允许 GraphRAG4OpenWebUI 在不依赖外部 API 的情况下运行,从而增强数据隐私并降低使用成本。
安装指南
确保您的系统上安装了 Python 3.8 或更高版本。然后按照以下步骤进行安装:
-
克隆代码库:
git clone https://github.com/your-username/GraphRAG4OpenWebUI.git cd GraphRAG4OpenWebUI
-
创建并激活虚拟环境:
python -m venv venv source venv/bin/activate # 在 Windows 上使用 venv\Scripts\activate
-
安装依赖项:
pip install -r requirements.txt
注意:graphrag 包可能需要从特定来源安装。如果上述命令无法安装 graphrag,请参考微软研究院的具体说明或联系维护者获取正确的安装方法。
配置
在运行 API 之前,您需要设置以下环境变量。可以通过创建 .env
文件或直接在终端中导出它们:
# 设置 TAVILY API 密钥
export TAVILY_API_KEY="your_tavily_api_key"
export INPUT_DIR="/path/to/your/input/directory"
# 设置 LLM 的 API 密钥
export GRAPHRAG_API_KEY="your_actual_api_key_here"
# 设置嵌入 API 密钥(如果与 GRAPHRAG_API_KEY 不同)
export GRAPHRAG_API_KEY_EMBEDDING="your_embedding_api_key_here"
# 设置 LLM 模型
export GRAPHRAG_LLM_MODEL="gemma2"
# 设置 API 基础 URL
export API_BASE="http://localhost:11434/v1"
# 设置嵌入 API 基础 URL(默认为 OpenAI 的 API)
export API_BASE_EMBEDDING="https://api.openai.com/v1"
# 设置嵌入模型(默认是 "text-embedding-3-small")
export GRAPHRAG_EMBEDDING_MODEL="text-embedding-3-small"
确保将上述命令中的占位符替换为您的实际 API 密钥和路径。
使用方法
-
启动服务器:
python main-en.py
服务器将在
http://localhost:8012
上运行。 -
API 端点:
/v1/chat/completions
:POST 请求用于执行搜索/v1/models
:GET 请求用于检索可用模型列表
-
与 Open WebUI 集成: 在 Open WebUI 配置中,将 API 端点设置为
http://localhost:8012/v1/chat/completions
。这将允许 Open WebUI 使用 GraphRAG4OpenWebUI 的搜索功能。 -
示例搜索请求:
import requests import json url = "http://localhost:8012/v1/chat/completions" headers = {"Content-Type": "application/json"} data = { "model": "full-model:latest", "messages": [{"role": "user", "content": "Your search query"}], "temperature": 0.7 } response = requests.post(url, headers=headers, data=json.dumps(data)) print(response.json())
可用模型
graphrag-local-search:latest
:本地搜索graphrag-global-search:latest
:全局搜索tavily-search:latest
:Tavily 搜索full-model:latest
:综合搜索(包含以上所有搜索方法)
注意事项
- 确保在
INPUT_DIR
目录下拥有正确的输入文件(如 Parquet 文件)。 - API 使用异步编程,确保您的环境支持异步操作。
- 对于大规模部署,考虑使用生产级 ASGI 服务器。
- 该项目专为 Open WebUI 设计,可以轻松集成到各种基于 Web 的应用中。
贡献
欢迎拉取请求。对于重大更改,请先打开一个 issue 以讨论您希望进行的更改。
许可证
该项目采用 Apache-2.0 许可证 授权。