Создание графиков знаний из неструктурированных данных
Это приложение предназначено для преобразования неструктурированных данных (pdf-файлы, документы, текстовые файлы, видео на YouTube, веб-страницы и т. д.) в граф знаний, хранящийся в Neo4j. Он использует возможности больших языковых моделей (OpenAI, Gemini и т. д.) для извлечения узлов, связей и их свойств из текста и создания структурированного графа знаний с использованием инфраструктуры Langchain.
Загрузите свои файлы с локального компьютера, из корзины GCS или S3 или из веб-источников, выберите свою модель 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 "
В корневой папке создайте файл .env с ключами OPENAI и DIFFBOT (если вы хотите использовать оба):
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:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
Вы, конечно, можете объединить все (локальное, YouTube, Википедию, s3 и gcs) или удалить все, что вам не нужно/не нужно.
По умолчанию будут доступны все режимы чата: вектор, граф_вектор, график, полнотекстовый, граф_вектор_полный текст, объект_вектор и глобальный_вектор. Если ни один из режимов не указан в переменной режимов чата, все режимы будут доступны:
VITE_CHAT_MODES = " "
Однако если вы хотите указать только векторный режим или только графический режим, вы можете сделать это, указав режим в env:
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_EMBEDDING | Необязательный | истинный | Флаг, позволяющий включить встраивание текста |
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 | URI для базы данных Neo4j |
NEO4J_USERNAME | Необязательный | neo4j | Имя пользователя для базы данных Neo4j |
NEO4J_ПАРОЛЬ | Необязательный | пароль | Пароль для базы данных Neo4j |
LANGCHAIN_API_KEY | Необязательный | API-ключ для Langchain | |
ЛАНГЧЕЙН_ПРОЕКТ | Необязательный | Проект для Langchain | |
LANGCHAIN_TRACING_V2 | Необязательный | истинный | Флаг, позволяющий включить трассировку Langchain |
LANGCHAIN_ENDPOINT | Необязательный | https://api.smith.langchain.com | Конечная точка для API Langchain |
VITE_BACKEND_API_URL | Необязательный | http://локальный хост:8000 | URL-адрес внутреннего API |
VITE_BLOOM_URL | Необязательный | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | URL-адрес визуализации Bloom |
VITE_REACT_APP_SOURCES | Обязательный | местный, YouTube, Wiki, s3 | Список входных источников, которые будут доступны |
VITE_CHAT_MODES | Обязательный | векторный график+векторный график гибридный | Доступны режимы чата для вопросов и ответов |
ВИТЕ_ЕНВ | Обязательный | РАЗРАБОТКА или ПРОД | Переменная среды для приложения |
VITE_TIME_PER_PAGE | Необязательный | 50 | Время обработки страницы |
VITE_CHUNK_SIZE | Необязательный | 5242880 | Размер каждого фрагмента файла для загрузки |
VITE_GOOGLE_CLIENT_ID | Необязательный | Идентификатор клиента для аутентификации Google | |
VITE_LLM_MODELS_PROD | Необязательный | openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash | Чтобы отличить модели на основе Enviornment PROD или DEV |
GCS_FILE_CACHE | Необязательный | ЛОЖЬ | Если установлено значение True, файлы для обработки будут сохранены в GCS. Если установлено значение False, файлы будут сохраняться локально. |
ENTITY_EMBEDDING | Необязательный | ЛОЖЬ | Если установлено значение 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 Knowledge Graph Builder
Neo4j Рабочая область
Демо приложения
По любым вопросам или поддержке не стесняйтесь поднимать проблему на Github.