本地部署文档
先决条件
您需要拥有 Neo4j 数据库 V5.18 或更高版本,并安装了 APOC 才能使用此知识图谱构建器。您可以使用任何 Neo4j Aura 数据库(包括免费层数据库)。Neo4j Aura 自动包含 APOC 并在最新的 Neo4j 版本上运行,使其成为快速入门的绝佳选择。
您也可以使用 Neo4j Sandbox 中的免费试用版,其中还包括图数据科学。如果要改为使用 Neo4j 桌面版,则需要将 NEO4J_URI=bolt://host.docker.internal
配置为允许 Docker 容器访问计算机上运行的网络。
Docker-compose
默认情况下,仅启用 OpenAI 和 Diffbot,因为 Gemini 需要额外的 GCP 配置。
在根文件夹中,创建一个包含您的 OPENAI 和 DIFFBOT 密钥的 .env 文件(如果您想同时使用两者)。
OPENAI_API_KEY="your-openai-key"
DIFFBOT_API_KEY="your-diffbot-key"
如果您只需要 OpenAI
LLM_MODELS="gpt-3.5,gpt-4o"
OPENAI_API_KEY="your-openai-key"
如果您只需要 Diffbot
LLM_MODELS="diffbot"
DIFFBOT_API_KEY="your-diffbot-key"
然后,您可以运行 Docker Compose 来构建并启动所有组件。
docker-compose up --build
配置 LLM 模型
除了开箱即用的模型外,您还可以配置以下 LLM 模型。
-
OpenAI GPT 3.5 和 4o(默认)
-
VertexAI(Gemini 1.0)(默认)
-
VertexAI(Gemini 1.5)
-
Diffbot
-
Bedrock 模型
-
Anthropic
-
与 OpenAI API 兼容的模型,如 Ollama、Groq、Fireworks
为此,您需要设置一些环境变量。
在您的 .env
文件中,添加以下行。当然,您也可以从这些提供商或任何与 OpenAI API 兼容的提供商添加其他模型配置。
LLM_MODEL_CONFIG_azure_ai_gpt_35="gpt-35,https://<deployment>.openai.azure.com/,<api-key>,<version>"
LLM_MODEL_CONFIG_anthropic_claude_35_sonnet="claude-3-5-sonnet-20240620,<api-key>"
LLM_MODEL_CONFIG_fireworks_llama_v3_70b="accounts/fireworks/models/llama-v3-70b-instruct,<api-key>"
LLM_MODEL_CONFIG_bedrock_claude_35_sonnet="anthropic.claude-3-sonnet-20240229-v1:0,<api-key>,<region>"
LLM_MODEL_CONFIG_ollama_llama3="llama3,http://host.docker.internal:11434"
LLM_MODEL_CONFIG_fireworks_qwen_72b="accounts/fireworks/models/qwen2-72b-instruct,<api-key>"
# Optional Frontend config
LLM_MODELS="diffbot,gpt-3.5,gpt-4o,azure_ai_gpt_35,azure_ai_gpt_4o,groq_llama3_70b,anthropic_claude_35_sonnet,fireworks_llama_v3_70b,bedrock_claude_35_sonnet,ollama_llama3,fireworks_qwen_72b"
在您的 docker-compose.yml
中,您需要通过以下方式传递变量。
- LLM_MODEL_CONFIG_anthropic_claude_35_sonnet=${LLM_MODEL_CONFIG_anthropic_claude_35_sonnet-}
- LLM_MODEL_CONFIG_fireworks_llama_v3_70b=${LLM_MODEL_CONFIG_fireworks_llama_v3_70b-}
- LLM_MODEL_CONFIG_azure_ai_gpt_4o=${LLM_MODEL_CONFIG_azure_ai_gpt_4o-}
- LLM_MODEL_CONFIG_azure_ai_gpt_35=${LLM_MODEL_CONFIG_azure_ai_gpt_35-}
- LLM_MODEL_CONFIG_groq_llama3_70b=${LLM_MODEL_CONFIG_groq_llama3_70b-}
- LLM_MODEL_CONFIG_bedrock_claude_3_5_sonnet=${LLM_MODEL_CONFIG_bedrock_claude_3_5_sonnet-}
- LLM_MODEL_CONFIG_fireworks_qwen_72b=${LLM_MODEL_CONFIG_fireworks_qwen_72b-}
- LLM_MODEL_CONFIG_ollama_llama3=${LLM_MODEL_CONFIG_ollama_llama3-}
其他配置
默认情况下,输入源将为:本地文件、YouTube、维基百科和 AWS S3。如果您未在 .env 文件中覆盖它,则将应用此默认配置。
REACT_APP_SOURCES="local,youtube,wiki,s3"
但是,如果您需要 Google GCS 集成,请添加 gcs
和您的 Google 客户端 ID。
REACT_APP_SOURCES="local,youtube,wiki,s3,gcs"
GOOGLE_CLIENT_ID="xxxx"
REACT_APP_SOURCES
应为要启用的源的逗号分隔列表。当然,您可以组合所有(本地、youtube、维基百科、s3 和 gcs)或删除任何不需要的源。
开发(单独的前端和后端)
或者,您可以分别运行后端和前端。
-
对于前端
-
通过复制/粘贴 frontend/example.env 创建 frontend/.env 文件。
-
根据需要更改值。
-
运行
-
cd frontend
yarn
yarn run dev
-
对于后端
-
通过复制/粘贴 backend/example.env 创建 backend/.env 文件。
-
根据需要更改值。
-
运行
-
cd backend
python -m venv envName
source envName/bin/activate
pip install -r requirements.txt
uvicorn score:app --reload
环境变量
处理配置
环境变量名称 | 必填/可选 | 默认值 | 描述 |
---|---|---|---|
|
可选 |
|
启用文本嵌入以用于块的标志 |
|
可选 |
|
启用实体嵌入(ID 和描述)的标志 |
|
可选 |
|
用于连接相似块的 KNN 算法的最低分数 |
|
可选 |
|
提取实体时要组合的块数 |
|
可选 |
|
写入数据库并更新进度之前处理的块数 |
|
可选 |
|
应用程序的环境变量 |
|
可选 |
|
每个块的处理时间 |
|
可选 |
|
每个块的处理大小 |
前端配置
环境变量名称 | 必填/可选 | 默认值 | 描述 |
---|---|---|---|
|
可选 |
后端 API 的 URL |
|
|
可选 |
|
将可用的输入源列表 |
|
可选 |
|
Bloom 可视化的 URL |
GCP 云集成
环境变量名称 | 必填/可选 | 默认值 | 描述 |
---|---|---|---|
|
可选 |
|
启用 Gemini 的标志 |
|
可选 |
|
启用 Google Cloud 日志的标志 |
|
可选 |
用于 GCS 上传的 Google 身份验证的客户端 ID |
|
|
可选 |
|
如果设置为 True,则将要处理的文件保存到 GCS。如果设置为 False,则将文件保存在本地。 |
LLM 模型配置
环境变量名称 | 必填/可选 | 默认值 | 描述 |
---|---|---|---|
|
可选 |
|
可在前端选择的模型,用于实体提取和问答聊天机器人(其他模型: |
|
可选 |
|
OpenAI 的 API 密钥(如果已启用) |
|
可选 |
Diffbot 的 API 密钥(如果已启用) |
|
|
可选 |
|
用于生成文本嵌入的模型(all-MiniLM-L6-v2、openai、vertexai) |
|
可选 |
Groq 的 API 密钥 |
|
|
可选 |
|
启用 Gemini 的标志 |
|
可选 |
其他 LLM 模型的配置 |
LangChain 和 Neo4j 配置
环境变量名称 | 必填/可选 | 默认值 | 描述 |
---|---|---|---|
|
可选 |
|
后端连接到的 Neo4j 数据库的 URI |
|
可选 |
|
后端连接到的 Neo4j 数据库的用户名 |
|
可选 |
|
后端连接到的 Neo4j 数据库的密码 |
|
可选 |
LangSmith 的 API 密钥 |
|
|
可选 |
LangSmith 的项目 |
|
|
可选 |
|
启用 LangSmith 追踪的标志 |
|
可选 |
LangSmith API 的端点 |