从非结构化数据创建知识图
该应用程序旨在将非结构化数据(pdf、文档、txt、youtube 视频、网页等)转换为存储在 Neo4j 中的知识图。它利用大型语言模型(OpenAI、Gemini 等)的强大功能从文本中提取节点、关系及其属性,并使用 Langchain 框架创建结构化知识图。
从本地计算机、GCS 或 S3 存储桶或从 Web 源上传文件,选择您的 LLM 模型并生成知识图。
默认情况下仅启用 OpenAI 和 Diffbot,因为 Gemini 需要额外的 GCP 配置。根据环境,我们正在配置由 VITE_LLM_MODELS_PROD 变量指示的模型,我们可以根据需要配置模型。前任:
VITE_LLM_MODELS_PROD = " openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash "
在根文件夹中,使用 OPENAI 和 DIFFBOT 密钥创建一个 .env 文件(如果您想同时使用两者):
OPENAI_API_KEY = " your-openai-key "
DIFFBOT_API_KEY = " your-diffbot-key "
如果你只想要 OpenAI:
VITE_LLM_MODELS_PROD = " diffbot,openai-gpt-3.5,openai-gpt-4o "
OPENAI_API_KEY = " your-openai-key "
如果你只想要 Diffbot:
VITE_LLM_MODELS_PROD = " diffbot "
DIFFBOT_API_KEY = " your-diffbot-key "
然后,您可以运行 Docker Compose 来构建并启动所有组件:
docker-compose up --build
默认情况下,输入源为:本地文件、Youtube、维基百科、AWS S3 和网页。当应用此默认配置时:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,web "
但是,如果您想要 Google GCS 集成,请添加gcs
和您的 Google 客户端 ID:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
您当然可以合并所有内容(本地、youtube、维基百科、s3 和 gcs)或删除任何您不想要/不需要的内容。
默认情况下,所有聊天模式都可用:向量、图向量、图、全文、图向量全文、实体向量和全局向量。如果聊天模式变量中未提及任何模式,则所有模式都可用:
VITE_CHAT_MODES = " "
但是,如果您想指定唯一的矢量模式或仅图形模式,您可以通过在环境中指定模式来实现:
VITE_CHAT_MODES = " vector,graph "
或者,您可以单独运行后端和前端:
cd frontend
yarn
yarn run dev
cd backend
python -m venv envName
source envName/bin/activate
pip install -r requirements.txt
uvicorn score:app --reload
要在 Google Cloud Platform 上部署应用程序和包,请在 google cloud run 上运行以下命令:
# Frontend deploy
gcloud run deploy dev-frontend --set-env-vars " VITE_BACKEND_API_URL= " --set-env-vars " VITE_FRONTEND_HOSTNAME=hostname.us-central1.run.app " --set-env-vars " VITE_SEGMENT_API_URL=https://cdn.segment.com/v1/projects/4SGwdwzuDm5WkFvQtz7D6ATQlo14yjmW/settings "
source location current directory > Frontend
region : 32 [us-central 1]
Allow unauthenticated request : Yes
# Backend deploy
gcloud run deploy --set-env-vars " OPENAI_API_KEY = " --set-env-vars " DIFFBOT_API_KEY = " --set-env-vars " NEO4J_URI = " --set-env-vars " NEO4J_PASSWORD = " --set-env-vars " NEO4J_USERNAME = "
source location current directory > Backend
region : 32 [us-central 1]
Allow unauthenticated request : Yes
环境变量名称 | 必填/可选 | 默认值 | 描述 |
---|---|---|---|
嵌入模型 | 选修的 | 全MiniLM-L6-v2 | 用于生成文本嵌入的模型(all-MiniLM-L6-v2、openai、vertexai) |
IS_嵌入 | 选修的 | 真的 | 启用文本嵌入的标志 |
KNN_MIN_SCORE | 选修的 | 0.94 | KNN 算法的最低分数 |
GEMINI_ENABLED | 选修的 | 错误的 | 标记以启用 Gemini |
GCP_LOG_METRICS_ENABLED | 选修的 | 错误的 | 标记以启用 Google Cloud 日志 |
NUMBER_OF_CHUNKS_TO_COMBINE | 选修的 | 5 | 处理嵌入时要组合的块数 |
UPDATE_GRAPH_CHUNKS_PROCESSED | 选修的 | 20 | 更新进度之前处理的块数 |
NEO4J_URI | 选修的 | neo4j://数据库:7687 | Neo4j 数据库的 URI |
NEO4J_USERNAME | 选修的 | 新4j | Neo4j 数据库的用户名 |
NEO4J_PASSWORD | 选修的 | 密码 | Neo4j 数据库的密码 |
LANGCHAIN_API_KEY | 选修的 | Langchain 的 API 密钥 | |
LANGCHAIN_PROJECT | 选修的 | Langchain项目 | |
LANGCHAIN_TRACING_V2 | 选修的 | 真的 | 启用 Langchain 跟踪的标志 |
LANGCHAIN_ENDPOINT | 选修的 | https://api.smith.langchain.com | Langchain API 端点 |
VITE_BACKEND_API_URL | 选修的 | http://本地主机:8000 | 后端API的URL |
VITE_BLOOM_URL | 选修的 | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | Bloom 可视化的 URL |
VITE_REACT_APP_SOURCES | 强制的 | 本地、youtube、wiki、s3 | 可用的输入源列表 |
VITE_聊天_模式 | 强制的 | 矢量、图+矢量、图、混合 | 可用于问答的聊天模式 |
VITE_ENV | 强制的 | 开发或生产 | 应用程序的环境变量 |
VITE_TIME_PER_PAGE | 选修的 | 50 | 每页处理时间 |
VITE_CHUNK_SIZE | 选修的 | 5242880 | 上传的每个文件块的大小 |
VITE_GOOGLE_CLIENT_ID | 选修的 | 用于 Google 身份验证的客户端 ID | |
VITE_LLM_MODELS_PROD | 选修的 | openai_gpt_4o、openai_gpt_4o_mini、diffbot、gemini_1.5_flash | 根据环境 PROD 或 DEV 区分模型 |
GCS_FILE_CACHE | 选修的 | 错误的 | 如果设置为 True,会将要处理的文件保存到 GCS 中。如果设置为 False,将在本地保存文件 |
ENTITY_嵌入 | 选修的 | 错误的 | 如果设置为 True,它将为数据库中的每个实体添加嵌入 |
LLM_MODEL_CONFIG_ollama_<模型名称> | 选修的 | 将 ollama 配置设置为 - model_name,model_local_url 以进行本地部署 | |
RAGAS_EMBEDDING_MODEL | 选修的 | 开放伊 | ragas评估框架使用的嵌入模型 |
docker pull ollama/ollama
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker exec -it ollama ollama run llama3
LLM_MODEL_CONFIG_ollama_
# example
LLM_MODEL_CONFIG_ollama_llama3 = ${LLM_MODEL_CONFIG_ollama_llama3-llama3,
http : //host.docker.internal:11434}
VITE_BACKEND_API_URL = ${ VITE_BACKEND_API_URL-backendurl }
LLM知识图生成器应用程序
Neo4j 工作区
应用程序演示
如有任何疑问或支持,请随时提出 Github Issue