Membuat grafik pengetahuan dari data tidak terstruktur
Aplikasi ini dirancang untuk mengubah data tidak terstruktur (pdf, docs, txt, video youtube, halaman web, dll.) menjadi grafik pengetahuan yang disimpan di Neo4j. Ini memanfaatkan kekuatan model bahasa besar (OpenAI, Gemini, dll.) untuk mengekstrak node, hubungan, dan propertinya dari teks dan membuat grafik pengetahuan terstruktur menggunakan kerangka Langchain.
Unggah file Anda dari mesin lokal, bucket GCS atau S3, atau dari sumber web, pilih model LLM Anda dan buat grafik pengetahuan.
Secara default, hanya OpenAI dan Diffbot yang diaktifkan karena Gemini memerlukan konfigurasi GCP tambahan. Sesuai dengan lingkungan, kami mengonfigurasi model yang ditunjukkan oleh variabel VITE_LLM_MODELS_PROD, kami dapat mengonfigurasi model berdasarkan kebutuhan kami. MANTAN:
VITE_LLM_MODELS_PROD = " openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash "
Di folder root Anda, buat file .env dengan kunci OPENAI dan DIFFBOT Anda (jika Anda ingin menggunakan keduanya):
OPENAI_API_KEY = " your-openai-key "
DIFFBOT_API_KEY = " your-diffbot-key "
jika Anda hanya menginginkan OpenAI:
VITE_LLM_MODELS_PROD = " diffbot,openai-gpt-3.5,openai-gpt-4o "
OPENAI_API_KEY = " your-openai-key "
jika Anda hanya ingin Diffbot:
VITE_LLM_MODELS_PROD = " diffbot "
DIFFBOT_API_KEY = " your-diffbot-key "
Anda kemudian dapat menjalankan Docker Compose untuk membangun dan memulai semua komponen:
docker-compose up --build
Secara default, sumber inputnya adalah: File lokal, Youtube, Wikipedia, AWS S3, dan Halaman Web. Saat konfigurasi default ini diterapkan:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,web "
Namun jika Anda menginginkan integrasi Google GCS, tambahkan gcs
dan ID klien Google Anda:
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
Tentu saja Anda dapat menggabungkan semua (lokal, youtube, wikipedia, s3 dan gcs) atau menghapus yang tidak Anda inginkan/butuhkan.
Secara default, semua mode obrolan akan tersedia: vektor, graph_vector, grafik, teks lengkap, graph_vector_fulltext , entitas_vector dan global_vector. Jika tidak ada mode yang disebutkan dalam variabel mode obrolan, semua mode akan tersedia:
VITE_CHAT_MODES = " "
Namun jika Anda ingin menentukan satu-satunya mode vektor atau mode grafik saja, Anda dapat melakukannya dengan menentukan mode di env:
VITE_CHAT_MODES = " vector,graph "
Alternatifnya, Anda dapat menjalankan backend dan frontend secara terpisah:
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
Untuk men-deploy aplikasi dan paket di Google Cloud Platform, jalankan perintah berikut di 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
Nama Variabel Env | Wajib/Opsional | Nilai Bawaan | Keterangan |
---|---|---|---|
EMBEDDING_MODEL | Opsional | semua-MiniLM-L6-v2 | Model untuk menghasilkan penyematan teks (all-MiniLM-L6-v2 , openai , vertexai) |
IS_EMBEDDING | Opsional | BENAR | Tandai untuk mengaktifkan penyematan teks |
KNN_MIN_SCORE | Opsional | 0,94 | Skor minimum untuk algoritma KNN |
GEMINI_ENABLED | Opsional | PALSU | Tandai untuk mengaktifkan Gemini |
GCP_LOG_METRICS_ENABLED | Opsional | PALSU | Tandai untuk mengaktifkan log Google Cloud |
NUMBER_OF_CHUNKS_TO_COMBINE | Opsional | 5 | Jumlah potongan yang akan digabungkan saat memproses penyematan |
UPDATE_GRAPH_CHUNKS_PROCESSED | Opsional | 20 | Jumlah potongan yang diproses sebelum memperbarui kemajuan |
NEO4J_URI | Opsional | neo4j://database:7687 | URI untuk basis data Neo4j |
NEO4J_USERNAME | Opsional | neo4j | Nama pengguna untuk basis data Neo4j |
NEO4J_PASSWORD | Opsional | kata sandi | Kata sandi untuk basis data Neo4j |
LANGCHAIN_API_KEY | Opsional | Kunci API untuk Langchain | |
LANGCHAIN_PROJECT | Opsional | Proyek untuk Langchain | |
LANGCHAIN_TRACING_V2 | Opsional | BENAR | Tandai untuk mengaktifkan pelacakan Langchain |
LANGCHAIN_ENDPOINT | Opsional | https://api.smith.langchain.com | Titik akhir untuk API Langchain |
VITE_BACKEND_API_URL | Opsional | http://localhost:8000 | URL untuk API ujung belakang |
VITE_BLOOM_URL | Opsional | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | URL untuk visualisasi Bloom |
VITE_REACT_APP_SOURCES | Wajib | lokal,youtube,wiki,s3 | Daftar sumber input yang akan tersedia |
VITE_CHAT_MODES | Wajib | vektor, grafik+vektor, grafik, hibrida | Mode obrolan tersedia untuk Tanya Jawab |
VITE_ENV | Wajib | DEV atau PROD | Variabel lingkungan untuk aplikasi |
VITE_TIME_PER_PAGE | Opsional | 50 | Waktu per halaman untuk diproses |
VITE_CHUNK_SIZE | Opsional | 5242880 | Ukuran setiap potongan file untuk diunggah |
VITE_GOOGLE_CLIENT_ID | Opsional | ID Klien untuk autentikasi Google | |
VITE_LLM_MODELS_PROD | Opsional | openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash | Untuk Membedakan model berdasarkan Lingkungan PROD atau DEV |
GCS_FILE_CACHE | Opsional | PALSU | Jika disetel ke True, akan menyimpan file untuk diproses ke GCS. Jika disetel ke False, akan menyimpan file secara lokal |
ENTITY_EMBEDDING | Opsional | PALSU | Jika disetel ke True, Ini akan menambahkan penyematan untuk setiap entitas dalam database |
LLM_MODEL_CONFIG_ollama_ | Opsional | Tetapkan konfigurasi ollama sebagai - model_name,model_local_url untuk penerapan lokal | |
RAGAS_EMBEDDING_MODEL | Opsional | terbuka | model penyematan yang digunakan oleh kerangka evaluasi 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 }
Aplikasi Pembuat Grafik Pengetahuan LLM
Ruang Kerja Neo4j
Demo aplikasi
Untuk pertanyaan atau dukungan apa pun, jangan ragu untuk menyampaikan Masalah Github