Erstellen von Wissensgraphen aus unstrukturierten Daten
Diese Anwendung wurde entwickelt, um unstrukturierte Daten (PDFs, Dokumente, TXTs, YouTube-Videos, Webseiten usw.) in einen in Neo4j gespeicherten Wissensgraphen umzuwandeln. Es nutzt die Leistungsfähigkeit großer Sprachmodelle (OpenAI, Gemini usw.), um Knoten, Beziehungen und ihre Eigenschaften aus dem Text zu extrahieren und mithilfe des Langchain-Frameworks einen strukturierten Wissensgraphen zu erstellen.
Laden Sie Ihre Dateien von einem lokalen Computer, einem GCS- oder S3-Bucket oder aus Webquellen hoch, wählen Sie Ihr LLM-Modell und erstellen Sie einen Wissensgraphen.
Standardmäßig sind nur OpenAI und Diffbot aktiviert, da Gemini zusätzliche GCP-Konfigurationen erfordert. Entsprechend der Umgebung konfigurieren wir die Modelle, die durch die Variable VITE_LLM_MODELS_PROD angezeigt werden. Wir können das Modell entsprechend unserem Bedarf konfigurieren. EX:
VITE_LLM_MODELS_PROD = " openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash "
Erstellen Sie in Ihrem Stammordner eine .env-Datei mit Ihren OPENAI- und DIFFBOT-Schlüsseln (wenn Sie beide verwenden möchten):
OPENAI_API_KEY = " your-openai-key "
DIFFBOT_API_KEY = " your-diffbot-key "
Wenn Sie nur OpenAI wollen:
VITE_LLM_MODELS_PROD = " diffbot,openai-gpt-3.5,openai-gpt-4o "
OPENAI_API_KEY = " your-openai-key "
Wenn Sie nur Diffbot wollen:
VITE_LLM_MODELS_PROD = " diffbot "
DIFFBOT_API_KEY = " your-diffbot-key "
Anschließend können Sie Docker Compose ausführen, um alle Komponenten zu erstellen und zu starten:
docker-compose up --build
Standardmäßig sind die Eingabequellen: Lokale Dateien, Youtube, Wikipedia, AWS S3 und Webseiten. Da diese Standardkonfiguration angewendet wird:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,web "
Wenn Sie jedoch die Google GCS-Integration wünschen, fügen Sie gcs
und Ihre Google-Client-ID hinzu:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
Sie können natürlich alle kombinieren (lokal, YouTube, Wikipedia, S3 und GCS) oder alle entfernen, die Sie nicht möchten/brauchen.
Standardmäßig sind alle Chat-Modi verfügbar: Vector, Graph_Vector, Graph, Fulltext, Graph_Vector_Fulltext, Entity_Vector und Global_Vector. Wenn keiner der Modi in der Chat-Modi-Variable erwähnt wird, sind alle Modi verfügbar:
VITE_CHAT_MODES = " "
Wenn Sie jedoch den einzigen Vektormodus oder nur den Grafikmodus angeben möchten, können Sie dies tun, indem Sie den Modus in der Umgebung angeben:
VITE_CHAT_MODES = " vector,graph "
Alternativ können Sie Backend und Frontend getrennt ausführen:
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
Um die App und Pakete auf der Google Cloud Platform bereitzustellen, führen Sie den folgenden Befehl in Google Cloud Run aus:
# 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
Name der Umgebungsvariablen | Obligatorisch/Optional | Standardwert | Beschreibung |
---|---|---|---|
EMBEDDING_MODEL | Optional | All-MiniLM-L6-v2 | Modell zur Generierung der Texteinbettung (all-MiniLM-L6-v2, openai, vertexai) |
IS_EMBEDDING | Optional | WAHR | Flag zum Aktivieren der Texteinbettung |
KNN_MIN_SCORE | Optional | 0,94 | Mindestpunktzahl für den KNN-Algorithmus |
GEMINI_ENABLED | Optional | FALSCH | Flag zum Aktivieren von Gemini |
GCP_LOG_METRICS_ENABLED | Optional | FALSCH | Flag zum Aktivieren von Google Cloud-Protokollen |
NUMBER_OF_CHUNKS_TO_COMBINE | Optional | 5 | Anzahl der Blöcke, die bei der Verarbeitung von Einbettungen kombiniert werden sollen |
UPDATE_GRAPH_CHUNKS_PROCESSED | Optional | 20 | Anzahl der verarbeiteten Blöcke, bevor der Aktualisierungsfortschritt erfolgt |
NEO4J_URI | Optional | neo4j://database:7687 | URI für die Neo4j-Datenbank |
NEO4J_USERNAME | Optional | neo4j | Benutzername für die Neo4j-Datenbank |
NEO4J_PASSWORD | Optional | Passwort | Passwort für die Neo4j-Datenbank |
LANGCHAIN_API_KEY | Optional | API-Schlüssel für Langchain | |
LANGCHAIN_PROJECT | Optional | Projekt für Langchain | |
LANGCHAIN_TRACING_V2 | Optional | WAHR | Flag zum Aktivieren der Langchain-Ablaufverfolgung |
LANGCHAIN_ENDPOINT | Optional | https://api.smith.langchain.com | Endpunkt für die Langchain-API |
VITE_BACKEND_API_URL | Optional | http://localhost:8000 | URL für die Backend-API |
VITE_BLOOM_URL | Optional | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | URL für die Bloom-Visualisierung |
VITE_REACT_APP_SOURCES | Obligatorisch | lokal,youtube,wiki,s3 | Liste der verfügbaren Eingabequellen |
VITE_CHAT_MODES | Obligatorisch | Vektor, Diagramm+Vektor, Diagramm, Hybrid | Chat-Modi für Fragen und Antworten verfügbar |
VITE_ENV | Obligatorisch | ENTWICKLER oder PRODUKT | Umgebungsvariable für die App |
VITE_TIME_PER_PAGE | Optional | 50 | Zeit pro Seite für die Verarbeitung |
VITE_CHUNK_SIZE | Optional | 5242880 | Größe jedes Dateiblocks zum Hochladen |
VITE_GOOGLE_CLIENT_ID | Optional | Client-ID für die Google-Authentifizierung | |
VITE_LLM_MODELS_PROD | Optional | openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash | Zur Unterscheidung von Modellen basierend auf der Umgebung PROD oder DEV |
GCS_FILE_CACHE | Optional | FALSCH | Wenn auf „True“ gesetzt, werden die zu verarbeitenden Dateien im GCS gespeichert. Wenn auf „False“ gesetzt, werden die Dateien lokal gespeichert |
ENTITY_EMBEDDING | Optional | FALSCH | Wenn es auf „True“ gesetzt ist, werden Einbettungen für jede Entität in der Datenbank hinzugefügt |
LLM_MODEL_CONFIG_ollama_ | Optional | Legen Sie die Ollama-Konfiguration für lokale Bereitstellungen auf „Modellname, lokale Modell-URL“ fest | |
RAGAS_EMBEDDING_MODEL | Optional | openai | Einbettungsmodell, das vom Ragas-Bewertungsframework verwendet wird |
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 Knowledge Graph Builder-Anwendung
Neo4j-Arbeitsbereich
Demo der Anwendung
Bei Fragen oder Unterstützung wenden Sie sich bitte an Github Issue