การสร้างกราฟความรู้จากข้อมูลที่ไม่มีโครงสร้าง
แอปพลิเคชันนี้ออกแบบมาเพื่อเปลี่ยนข้อมูลที่ไม่มีโครงสร้าง (pdf, เอกสาร, txt, วิดีโอ 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, Wikipedia ,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) หรือลบสิ่งที่คุณไม่ต้องการ/จำเป็นออกได้
ตามค่าเริ่มต้น โหมดแชททั้งหมดจะใช้งานได้: vector, graph_vector, graph, fulltext, graph_vector_fulltext , entert_vector และ global_vector หากไม่มีโหมดใดถูกกล่าวถึงในตัวแปรโหมดแชท ทุกโหมดจะใช้งานได้:
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 ให้รันคำสั่งต่อไปนี้บน 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
ชื่อตัวแปร Env | บังคับ/ไม่บังคับ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
ฝัง_MODEL | ไม่จำเป็น | ทั้งหมด-MiniLM-L6-v2 | แบบจำลองสำหรับสร้างการฝังข้อความ (all-MiniLM-L6-v2 , openai , vertexai) |
IS_EMBEDDING | ไม่จำเป็น | จริง | ตั้งค่าสถานะเพื่อเปิดใช้งานการฝังข้อความ |
KNN_MIN_SCORE | ไม่จำเป็น | 0.94 | คะแนนขั้นต่ำสำหรับอัลกอริทึม KNN |
ราศีเมถุน_เปิดใช้งานแล้ว | ไม่จำเป็น | เท็จ | ตั้งค่าสถานะเพื่อเปิดใช้งานราศีเมถุน |
GCP_LOG_METRICS_ENABLED | ไม่จำเป็น | เท็จ | ตั้งค่าสถานะเพื่อเปิดใช้งานบันทึกของ Google Cloud |
NUMBER_OF_CHUNKS_TO_COMBINE | ไม่จำเป็น | 5 | จำนวนชิ้นที่จะรวมเมื่อประมวลผลการฝัง |
อัปเดต_GRAPH_CHUNKS_PROCESSED | ไม่จำเป็น | 20 | จำนวนชิ้นที่ประมวลผลก่อนที่จะอัปเดตความคืบหน้า |
NEO4J_URI | ไม่จำเป็น | neo4j://ฐานข้อมูล:7687 | URI สำหรับฐานข้อมูล Neo4j |
NEO4J_USERNAME | ไม่จำเป็น | นีโอ4เจ | ชื่อผู้ใช้สำหรับฐานข้อมูล Neo4j |
NEO4J_รหัสผ่าน | ไม่จำเป็น | รหัสผ่าน | รหัสผ่านสำหรับฐานข้อมูล Neo4j |
LANGCHAIN_API_KEY | ไม่จำเป็น | คีย์ API สำหรับ Langchain | |
LANCHAIN_โครงการ | ไม่จำเป็น | โครงการสำหรับแลงเชน | |
LANGCHAIN_TRACING_V2 | ไม่จำเป็น | จริง | ตั้งค่าสถานะเพื่อเปิดใช้งานการติดตาม Langchain |
LANGCHAIN_ENDPOINT | ไม่จำเป็น | https://api.smith.langchain.com | จุดสิ้นสุดสำหรับ Langchain API |
VITE_BACKEND_API_URL | ไม่จำเป็น | http://localhost: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, วิกิพีเดีย, s3 | รายการแหล่งอินพุตที่จะสามารถใช้ได้ |
VITE_CHAT_MODES | บังคับ | เวกเตอร์,กราฟ+เวกเตอร์,กราฟ,ไฮบริด | โหมดแชทสำหรับถามตอบ |
VITE_ENV | บังคับ | DEV หรือผลิตภัณฑ์ | ตัวแปรสภาพแวดล้อมสำหรับแอป |
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 | เพื่อแยกแยะโมเดลตามสภาพแวดล้อม 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 ได้เลย