Créer des graphiques de connaissances à partir de données non structurées
Cette application est conçue pour transformer des données non structurées (pdfs, documents, txt, vidéo YouTube, pages Web, etc.) en un graphique de connaissances stocké dans Neo4j. Il utilise la puissance des grands modèles de langage (OpenAI, Gemini, etc.) pour extraire les nœuds, les relations et leurs propriétés du texte et créer un graphe de connaissances structuré à l'aide du framework Langchain.
Téléchargez vos fichiers depuis une machine locale, un bucket GCS ou S3 ou depuis des sources Web, choisissez votre modèle LLM et générez un graphique de connaissances.
Par défaut, seuls OpenAI et Diffbot sont activés car Gemini nécessite des configurations GCP supplémentaires. Selon l'environnement, nous configurons les modèles qui sont indiqués par la variable VITE_LLM_MODELS_PROD. Nous pouvons configurer le modèle en fonction de nos besoins. EX:
VITE_LLM_MODELS_PROD = " openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash "
Dans votre dossier racine, créez un fichier .env avec vos clés OPENAI et DIFFBOT (si vous souhaitez utiliser les deux) :
OPENAI_API_KEY = " your-openai-key "
DIFFBOT_API_KEY = " your-diffbot-key "
si vous voulez seulement OpenAI :
VITE_LLM_MODELS_PROD = " diffbot,openai-gpt-3.5,openai-gpt-4o "
OPENAI_API_KEY = " your-openai-key "
si vous voulez seulement Diffbot :
VITE_LLM_MODELS_PROD = " diffbot "
DIFFBOT_API_KEY = " your-diffbot-key "
Vous pouvez ensuite exécuter Docker Compose pour créer et démarrer tous les composants :
docker-compose up --build
Par défaut, les sources d'entrée seront : Fichiers locaux, Youtube, Wikipédia, AWS S3 et pages Web. Comme cette configuration par défaut est appliquée :
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,web "
Si toutefois vous souhaitez l'intégration de Google GCS, ajoutez gcs
et votre identifiant client Google :
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
Vous pouvez bien sûr tout combiner (local, youtube, wikipedia, s3 et gcs) ou supprimer ceux dont vous ne voulez pas/n'avez pas besoin.
Par défaut, tous les modes de discussion seront disponibles : vecteur, graph_vecteur, graphique, texte intégral, graph_vecteur_fulltext, entités_vecteur et global_vecteur. Si aucun des modes n'est mentionné dans la variable des modes de discussion, tous les modes seront disponibles :
VITE_CHAT_MODES = " "
Si toutefois vous souhaitez spécifier le seul mode vectoriel ou uniquement le mode graphique, vous pouvez le faire en spécifiant le mode dans l'environnement :
VITE_CHAT_MODES = " vector,graph "
Alternativement, vous pouvez exécuter le backend et le frontend séparément :
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
Pour déployer l'application et les packages sur Google Cloud Platform, exécutez la commande suivante sur 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
Nom de la variable d'environnement | Obligatoire/Facultatif | Valeur par défaut | Description |
---|---|---|---|
EMBEDDING_MODEL | Facultatif | tout-MiniLM-L6-v2 | Modèle de génération de l'intégration de texte (all-MiniLM-L6-v2 , openai , vertexai) |
IS_EMBEDDING | Facultatif | vrai | Indicateur pour activer l'intégration de texte |
KNN_MIN_SCORE | Facultatif | 0,94 | Score minimum pour l'algorithme KNN |
GEMINI_ENABLED | Facultatif | FAUX | Indicateur pour activer Gemini |
GCP_LOG_METRICS_ENABLED | Facultatif | FAUX | Indicateur pour activer les journaux Google Cloud |
NUMBER_OF_CHUNKS_TO_COMBINE | Facultatif | 5 | Nombre de morceaux à combiner lors du traitement des intégrations |
UPDATE_GRAPH_CHUNKS_PROCESSED | Facultatif | 20 | Nombre de morceaux traités avant la progression de la mise à jour |
NEO4J_URI | Facultatif | neo4j://base de données:7687 | URI pour la base de données Neo4j |
NEO4J_USERNAME | Facultatif | néo4j | Nom d'utilisateur pour la base de données Neo4j |
NEO4J_PASSWORD | Facultatif | mot de passe | Mot de passe pour la base de données Neo4j |
LANGCHAIN_API_KEY | Facultatif | Clé API pour Langchain | |
LANGCHAIN_PROJECT | Facultatif | Projet pour Langchain | |
LANGCHAIN_TRACING_V2 | Facultatif | vrai | Indicateur pour activer le traçage Langchain |
LANGCHAIN_ENDPOINT | Facultatif | https://api.smith.langchain.com | Point de terminaison pour l'API Langchain |
VITE_BACKEND_API_URL | Facultatif | http://localhost:8000 | URL de l'API back-end |
VITE_BLOOM_URL | Facultatif | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | URL pour la visualisation Bloom |
VITE_REACT_APP_SOURCES | Obligatoire | local,youtube,wiki,s3 | Liste des sources d'entrée qui seront disponibles |
VITE_CHAT_MODES | Obligatoire | vecteur, graphique + vecteur, graphique, hybride | Modes de discussion disponibles pour les questions et réponses |
VITE_ENV | Obligatoire | DEV ou PROD | Variable d'environnement pour l'application |
VITE_TIME_PER_PAGE | Facultatif | 50 | Temps par page pour le traitement |
VITE_CHUNK_SIZE | Facultatif | 5242880 | Taille de chaque morceau de fichier à télécharger |
VITE_GOOGLE_CLIENT_ID | Facultatif | ID client pour l'authentification Google | |
VITE_LLM_MODELS_PROD | Facultatif | openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash | Pour distinguer les modèles en fonction de l'environnement PROD ou DEV |
GCS_FILE_CACHE | Facultatif | FAUX | S'il est défini sur True, enregistrera les fichiers à traiter dans GCS. Si défini sur False, enregistrera les fichiers localement |
ENTITY_EMBEDDING | Facultatif | FAUX | S'il est défini sur True, il ajoutera des intégrations pour chaque entité dans la base de données |
LLM_MODEL_CONFIG_ollama_ | Facultatif | Définissez la configuration d'ollama comme - model_name,model_local_url pour les déploiements locaux | |
RAGAS_EMBEDDING_MODEL | Facultatif | ouvert | modèle d'intégration utilisé par le cadre d'évaluation des 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 }
Application de création de graphiques de connaissances LLM
Espace de travail Neo4j
Démo de l'application
Pour toute demande de renseignements ou d'assistance, n'hésitez pas à soulever le problème Github