비정형 데이터에서 지식 그래프 만들기
이 애플리케이션은 구조화되지 않은 데이터(pdf, 문서, txt, 유튜브 비디오, 웹 페이지 등)를 Neo4j에 저장된 지식 그래프로 변환하도록 설계되었습니다. 이는 대규모 언어 모델(OpenAI, Gemini 등)의 기능을 활용하여 텍스트에서 노드, 관계 및 해당 속성을 추출하고 Langchain 프레임워크를 사용하여 구조화된 지식 그래프를 생성합니다.
로컬 머신, GCS, S3 버킷 또는 웹 소스에서 파일을 업로드하고 LLM 모델을 선택하고 지식 그래프를 생성하세요.
Gemini에는 추가 GCP 구성이 필요하므로 기본적으로 OpenAI 및 Diffbot만 활성화됩니다. 환경에 따라 우리는 VITE_LLM_MODELS_PROD 변수로 표시되는 모델을 구성하고 있으며 필요에 따라 모델을 구성할 수 있습니다. 전:
VITE_LLM_MODELS_PROD = " openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash "
루트 폴더에서 OPENAI 및 DIFFBOT 키를 사용하여 .env 파일을 만듭니다(둘 다 사용하려는 경우).
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, Wikipedia, AWS S3 및 웹페이지입니다. 이 기본 구성이 적용되므로:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,web "
그러나 Google GCS 통합을 원한다면 gcs
와 Google 클라이언트 ID를 추가하세요.
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
물론 모두(로컬, YouTube, Wikipedia, 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
환경 변수 이름 | 필수/선택 | 기본값 | 설명 |
---|---|---|---|
EMBEDDING_MODEL | 선택 과목 | 모든-MiniLM-L6-v2 | 텍스트 임베딩 생성을 위한 모델(all-MiniLM-L6-v2 , openai , vertexai) |
IS_EMBEDDING | 선택 과목 | 진실 | 텍스트 삽입을 활성화하는 플래그 |
KNN_MIN_SCORE | 선택 과목 | 0.94 | KNN 알고리즘의 최소 점수 |
GEMINI_활성화됨 | 선택 과목 | 거짓 | Gemini를 활성화하는 플래그 |
GCP_LOG_METRICS_ENABLED | 선택 과목 | 거짓 | Google Cloud 로그를 사용 설정하도록 플래그 지정 |
NUMBER_OF_CHUNKS_TO_COMBINE | 선택 과목 | 5 | 임베딩 처리 시 결합할 청크 수 |
UPDATE_GRAPH_CHUNKS_PROCESSED | 선택 과목 | 20 | 진행 상황을 업데이트하기 전에 처리된 청크 수 |
NEO4J_URI | 선택 과목 | neo4j://데이터베이스:7687 | Neo4j 데이터베이스의 URI |
NEO4J_USERNAME | 선택 과목 | neo4j | Neo4j 데이터베이스의 사용자 이름 |
NEO4J_PASSWORD | 선택 과목 | 비밀번호 | Neo4j 데이터베이스의 비밀번호 |
LANGCHAIN_API_KEY | 선택 과목 | Langchain용 API 키 | |
LANGCHAIN_PROJECT | 선택 과목 | Langchain 프로젝트 | |
LANGCHAIN_TRACING_V2 | 선택 과목 | 진실 | Langchain 추적을 활성화하는 플래그 |
LANGCHAIN_ENDPOINT | 선택 과목 | https://api.smith.langchain.com | Langchain API의 엔드포인트 |
VITE_BACKEND_API_URL | 선택 과목 | http://localhost:8000 | 백엔드 API의 URL |
VITE_BLOOM_URL | 선택 과목 | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | Bloom 시각화용 URL |
VITE_REACT_APP_SOURCES | 필수적인 | 로컬,유튜브,위키,s3 | 사용 가능한 입력 소스 목록 |
VITE_CHAT_MODES | 필수적인 | 벡터,그래프+벡터,그래프,하이브리드 | Q&A에 사용할 수 있는 채팅 모드 |
VITE_ENV | 필수적인 | DEV 또는 PROD | 앱의 환경 변수 |
VITE_TIME_PER_PAGE | 선택 과목 | 50 | 페이지당 처리 시간 |
VITE_CHUNK_SIZE | 선택 과목 | 5242880 | 업로드할 파일의 각 청크 크기 |
VITE_GOOGLE_CLIENT_ID | 선택 과목 | Google 인증을 위한 클라이언트 ID | |
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 지식 그래프 빌더 애플리케이션
Neo4j 작업공간
애플리케이션 데모
문의사항이나 지원이 필요하시면 Github Issue를 이용해 주시기 바랍니다.