将Microsoft的GraphRag技术集成到Open WebUI中以进行高级信息检索
英语| 简体中文GraphRag4OpenWebui是专门为开放WebUI设计的API接口,旨在集成Microsoft Research的GraphRag(基于图形的检索效果生成)技术。该项目提供了一个强大的信息检索系统,该系统支持多个搜索模型,特别适合在开放的Web用户界面中使用。
该项目的主要目标是为开放式webui提供一个方便的接口,以利用GraphRag的强大功能。它集成了三种主要检索方法,并提供了一个全面的搜索选项,从而使用户获得了彻底而精确的搜索结果。
本地搜索
全局搜索
坦率的搜索
完整的模型搜索
GraphRag4openwebui现在支持使用本地语言模型(LLM)和嵌入模型的使用,从而提高了项目的灵活性和隐私。具体来说,我们支持以下本地模型:
霍拉马
API_BASE环境变量设置为指向Ollama的API端点来配置LM Studio
API_BASE环境变量连接到LM Studio的服务本地嵌入模型
GRAPHRAG_EMBEDDING_MODEL环境变量指定要使用的嵌入模型对本地模型的这种支持使Gragrag4OpenWebui可以在不依赖外部API的情况下运行,从而增强数据隐私并降低使用成本。
确保系统上安装了3.8或更高的Python。然后,请按照以下步骤安装:
克隆存储库:
git clone https://github.com/your-username/GraphRAG4OpenWebUI.git
cd GraphRAG4OpenWebUI创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows use venvScriptsactivate安装依赖项:
pip install -r requirements.txt注意:可能需要从特定源安装GraphRag软件包。如果以上命令无法安装GraphRag,请参阅Microsoft Research的特定说明,或联系维护者以获取正确的安装方法。
在运行API之前,您需要设置以下环境变量。您可以通过创建.env文件或直接在终端中导出它们来做到这一点:
# Set the TAVILY API key
export TAVILY_API_KEY= " your_tavily_api_key "
export INPUT_DIR= " /path/to/your/input/directory "
# Set the API key for LLM
export GRAPHRAG_API_KEY= " your_actual_api_key_here "
# Set the API key for embedding (if different from GRAPHRAG_API_KEY)
export GRAPHRAG_API_KEY_EMBEDDING= " your_embedding_api_key_here "
# Set the LLM model
export GRAPHRAG_LLM_MODEL= " gemma2 "
# Set the API base URL
export API_BASE= " http://localhost:11434/v1 "
# Set the embedding API base URL (default is OpenAI's API)
export API_BASE_EMBEDDING= " https://api.openai.com/v1 "
# Set the embedding model (default is "text-embedding-3-small")
export GRAPHRAG_EMBEDDING_MODEL= " text-embedding-3-small "确保用实际的API键和路径替换上述命令中的占位符。
启动服务器:
python main-en.py
该服务器将在http://localhost:8012上运行。
API端点:
/v1/chat/completions :发布搜索的请求/v1/models :获取请求以检索可用型号的列表与Open WebUI集成:在打开的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文件)。欢迎拉动请求。对于重大更改,请先开设一个问题,以讨论您想更改的内容。
Apache-2.0许可证