Crear gráficos de conocimiento a partir de datos no estructurados
Esta aplicación está diseñada para convertir datos no estructurados (pdf, documentos, txt, videos de youtube, páginas web, etc.) en un gráfico de conocimiento almacenado en Neo4j. Utiliza el poder de los modelos de lenguaje grande (OpenAI, Gemini, etc.) para extraer nodos, relaciones y sus propiedades del texto y crear un gráfico de conocimiento estructurado utilizando el marco Langchain.
Cargue sus archivos desde la máquina local, GCS o S3 o desde fuentes web, elija su modelo LLM y genere un gráfico de conocimiento.
De forma predeterminada, solo OpenAI y Diffbot están habilitados, ya que Gemini requiere configuraciones de GCP adicionales. Según el entorno, estamos configurando los modelos que se indican con la variable VITE_LLM_MODELS_PROD, podemos configurar el modelo según nuestras necesidades. EX:
VITE_LLM_MODELS_PROD = " openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash "
En su carpeta raíz, cree un archivo .env con sus claves OPENAI y DIFFBOT (si desea usar ambas):
OPENAI_API_KEY = " your-openai-key "
DIFFBOT_API_KEY = " your-diffbot-key "
si solo quieres OpenAI:
VITE_LLM_MODELS_PROD = " diffbot,openai-gpt-3.5,openai-gpt-4o "
OPENAI_API_KEY = " your-openai-key "
si solo quieres Diffbot:
VITE_LLM_MODELS_PROD = " diffbot "
DIFFBOT_API_KEY = " your-diffbot-key "
Luego puede ejecutar Docker Compose para compilar e iniciar todos los componentes:
docker-compose up --build
De forma predeterminada, las fuentes de entrada serán: archivos locales, Youtube, Wikipedia, AWS S3 y páginas web. Como se aplica esta configuración predeterminada:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,web "
Sin embargo, si desea la integración de Google GCS, agregue gcs
y su ID de cliente de Google:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
Por supuesto, puede combinar todo (local, youtube, wikipedia, s3 y gcs) o eliminar cualquiera que no desee/necesite.
De forma predeterminada, todos los modos de chat estarán disponibles: vector, gráfico_vector, gráfico, texto completo, gráfico_vector_texto completo, entidad_vector y global_vector. Si ninguno de los modos se menciona en la variable de modos de chat, todos los modos estarán disponibles:
VITE_CHAT_MODES = " "
Sin embargo, si desea especificar el único modo vectorial o solo el modo gráfico, puede hacerlo especificando el modo en env:
VITE_CHAT_MODES = " vector,graph "
Alternativamente, puedes ejecutar el backend y el frontend por separado:
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
Para implementar la aplicación y los paquetes en Google Cloud Platform, ejecute el siguiente comando en 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
Nombre de la variable ambiental | Obligatorio/Opcional | Valor predeterminado | Descripción |
---|---|---|---|
EMBEDDING_MODEL | Opcional | todo-MiniLM-L6-v2 | Modelo para generar la incrustación de texto (all-MiniLM-L6-v2, openai, vertexai) |
IS_EMBEDING | Opcional | verdadero | Marcar para habilitar la incrustación de texto |
KNN_MIN_SCORE | Opcional | 0,94 | Puntuación mínima para el algoritmo KNN |
GÉMINIS_ENABLED | Opcional | FALSO | Marcar para habilitar Géminis |
GCP_LOG_METRICS_ENABLED | Opcional | FALSO | Marcar para habilitar los registros de Google Cloud |
NUMBER_OF_CHUNKS_TO_COMBINE | Opcional | 5 | Número de fragmentos a combinar al procesar incrustaciones |
UPDATE_GRAPH_CHUNKS_PROCESSED | Opcional | 20 | Número de fragmentos procesados antes del progreso de la actualización |
NEO4J_URI | Opcional | neo4j://base de datos:7687 | URI para la base de datos Neo4j |
NEO4J_NOMBRE DE USUARIO | Opcional | neo4j | Nombre de usuario para la base de datos Neo4j |
NEO4J_CONTRASEÑA | Opcional | contraseña | Contraseña para la base de datos Neo4j |
LANGCHAIN_API_KEY | Opcional | Clave API para Langchain | |
LANGCHAIN_PROJECT | Opcional | Proyecto para Langchain | |
LANGCHAIN_TRACING_V2 | Opcional | verdadero | Bandera para habilitar el rastreo de Langchain |
LANGCHAIN_ENDPOINT | Opcional | https://api.smith.langchain.com | Punto final para la API Langchain |
VITE_BACKEND_API_URL | Opcional | http://localhost:8000 | URL para la API de backend |
VITE_BLOOM_URL | Opcional | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | URL para visualización de Bloom |
VITE_REACT_APP_SOURCES | Obligatorio | local, youtube, wiki, s3 | Lista de fuentes de entrada que estarán disponibles |
VITE_CHAT_MODES | Obligatorio | vector,gráfico+vector,gráfico,híbrido | Modos de chat disponibles para preguntas y respuestas |
VITE_ENV | Obligatorio | DEV o PROD | Variable de entorno para la aplicación. |
VITE_TIME_PER_PAGE | Opcional | 50 | Tiempo por página para procesamiento |
VITE_CHUNK_SIZE | Opcional | 5242880 | Tamaño de cada fragmento de archivo para cargar |
VITE_GOOGLE_CLIENT_ID | Opcional | ID de cliente para la autenticación de Google | |
VITE_LLM_MODELS_PROD | Opcional | openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash | Distinguir modelos basados en el entorno PROD o DEV |
GCS_FILE_CACHE | Opcional | FALSO | Si se establece en Verdadero, guardará los archivos para procesarlos en GCS. Si se establece en False, guardará los archivos localmente |
ENTITY_EMBEDING | Opcional | FALSO | Si se establece en Verdadero, agregará incrustaciones para cada entidad en la base de datos. |
LLM_MODEL_CONFIG_ollama_ | Opcional | Establezca la configuración de ollama como: model_name,model_local_url para implementaciones locales | |
RAGAS_EMBEDDING_MODEL | Opcional | abierto | modelo de incorporación utilizado por el marco de evaluación 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 }
Aplicación de creación de gráficos de conocimiento LLM
Espacio de trabajo Neo4j
Demostración de la aplicación
Para cualquier consulta o soporte, no dudes en plantear el problema de Github.