從非結構化資料建立知識圖
該應用程式旨在將非結構化資料(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