Criação de gráficos de conhecimento a partir de dados não estruturados
Este aplicativo foi projetado para transformar dados não estruturados (pdfs, documentos, txt, vídeos do youtube, páginas da web, etc.) em um gráfico de conhecimento armazenado no Neo4j. Ele utiliza o poder dos modelos de linguagem Large (OpenAI, Gemini, etc.) para extrair nós, relacionamentos e suas propriedades do texto e criar um gráfico de conhecimento estruturado usando a estrutura Langchain.
Faça upload de seus arquivos da máquina local, do bucket GCS ou S3 ou de fontes da web, escolha seu modelo LLM e gere o gráfico de conhecimento.
Por padrão, apenas OpenAI e Diffbot estão habilitados, pois o Gemini requer configurações extras do GCP. De acordo com o ambiente estamos configurando os modelos que são indicados pela variável VITE_LLM_MODELS_PROD podemos configurar o modelo de acordo com nossa necessidade. EX:
VITE_LLM_MODELS_PROD = " openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash "
Na sua pasta raiz, crie um arquivo .env com suas chaves OPENAI e DIFFBOT (se quiser usar ambas):
OPENAI_API_KEY = " your-openai-key "
DIFFBOT_API_KEY = " your-diffbot-key "
se você quiser apenas OpenAI:
VITE_LLM_MODELS_PROD = " diffbot,openai-gpt-3.5,openai-gpt-4o "
OPENAI_API_KEY = " your-openai-key "
se você quiser apenas o Diffbot:
VITE_LLM_MODELS_PROD = " diffbot "
DIFFBOT_API_KEY = " your-diffbot-key "
Você pode então executar o Docker Compose para construir e iniciar todos os componentes:
docker-compose up --build
Por padrão, as fontes de entrada serão: Arquivos locais, Youtube, Wikipedia, AWS S3 e páginas da web. À medida que esta configuração padrão é aplicada:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,web "
Se, no entanto, você deseja a integração do Google GCS, adicione gcs
e seu ID de cliente do Google:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
É claro que você pode combinar todos (local, youtube, wikipedia, s3 e gcs) ou remover qualquer um que não queira/precise.
Por padrão, todos os modos de chat estarão disponíveis: vetor, gráfico_vetor, gráfico, texto completo, gráfico_vetor_fulltext, entidade_vetor e vetor_global. Se nenhum modo for mencionado na variável de modos de chat, todos os modos estarão disponíveis:
VITE_CHAT_MODES = " "
Se, no entanto, você deseja especificar o único modo vetorial ou apenas o modo gráfico, você pode fazer isso especificando o modo no env:
VITE_CHAT_MODES = " vector,graph "
Alternativamente, você pode executar o back-end e o front-end separadamente:
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 implantar o aplicativo e os pacotes no Google Cloud Platform, execute o seguinte comando no 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
Nome da variável ambiente | Obrigatório/Opcional | Valor padrão | Descrição |
---|---|---|---|
EMBEDDING_MODEL | Opcional | tudo-MiniLM-L6-v2 | Modelo para gerar a incorporação de texto (all-MiniLM-L6-v2 , openai , vertexai) |
IS_EMBEDDING | Opcional | verdadeiro | Sinalizador para ativar a incorporação de texto |
KNN_MIN_SCORE | Opcional | 0,94 | Pontuação mínima para algoritmo KNN |
GEMINI_ENABLED | Opcional | Falso | Sinalizador para ativar o Gemini |
GCP_LOG_METRICS_ENABLED | Opcional | Falso | Sinalização para ativar os registros do Google Cloud |
NUMBER_OF_CHUNKS_TO_COMBINE | Opcional | 5 | Número de pedaços a serem combinados ao processar embeddings |
UPDATE_GRAPH_CHUNKS_PROCESSED | Opcional | 20 | Número de pedaços processados antes da atualização do progresso |
NEO4J_URI | Opcional | neo4j://banco de dados:7687 | URI para banco de dados Neo4j |
NEO4J_USERNAME | Opcional | neo4j | Nome de usuário para banco de dados Neo4j |
NEO4J_SENHA | Opcional | senha | Senha para banco de dados Neo4j |
LANGCHAIN_API_KEY | Opcional | Chave API para Langchain | |
LANGCHAIN_PROJECT | Opcional | Projeto para Langchain | |
LANGCHAIN_TRACING_V2 | Opcional | verdadeiro | Sinalizador para ativar o rastreamento Langchain |
LANGCHAIN_ENDPOINT | Opcional | https://api.smith.langchain.com | Ponto final para API Langchain |
VITE_BACKEND_API_URL | Opcional | http://localhost:8000 | URL para API de back-end |
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 visualização Bloom |
VITE_REACT_APP_SOURCES | Obrigatório | local,youtube,wiki,s3 | Lista de fontes de entrada que estarão disponíveis |
VITE_CHAT_MODES | Obrigatório | vetor,gráfico+vetor,gráfico,híbrido | Modos de bate-papo disponíveis para perguntas e respostas |
VITE_ENV | Obrigatório | DEV ou PROD | Variável de ambiente do aplicativo |
VITE_TIME_PER_PAGE | Opcional | 50 | Tempo por página para processamento |
VITE_CHUNK_SIZE | Opcional | 5242880 | Tamanho de cada pedaço de arquivo para upload |
VITE_GOOGLE_CLIENT_ID | Opcional | ID do cliente para autenticação do Google | |
VITE_LLM_MODELS_PROD | Opcional | openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash | Distinguir modelos baseados no Ambiente PROD ou DEV |
GCS_FILE_CACHE | Opcional | Falso | Se definido como True, os arquivos serão salvos para serem processados no GCS. Se definido como False, salvará os arquivos localmente |
ENTITY_EMBEDDING | Opcional | Falso | Se definido como True, adicionará embeddings para cada entidade no banco de dados |
LLM_MODEL_CONFIG_ollama_ | Opcional | Defina a configuração do ollama como - model_name,model_local_url para implantações locais | |
RAGAS_EMBEDDING_MODEL | Opcional | aberto | modelo de incorporação usado pela estrutura de avaliação 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 }
Aplicativo LLM Knowledge Graph Builder
Espaço de trabalho Neo4j
Demonstração do aplicativo
Para qualquer dúvida ou suporte, sinta-se à vontade para levantar o problema no Github