RAG UI แบบโอเพ่นซอร์สที่สะอาดและปรับแต่งได้สำหรับการแชทกับเอกสารของคุณ สร้างขึ้นโดยคำนึงถึงทั้งผู้ใช้ปลายทางและนักพัฒนา
สาธิตสด | ติดตั้งออนไลน์ | คู่มือผู้ใช้ | คู่มือนักพัฒนา | คำติชม | ติดต่อ
โปรเจ็กต์นี้ทำหน้าที่เป็น RAG UI ที่ใช้งานได้สำหรับทั้งผู้ใช้ปลายทางที่ต้องการทำ QA บนเอกสารของตน และนักพัฒนาที่ต้องการสร้างไปป์ไลน์ RAG ของตนเอง
- ผู้ใช้ปลายทาง: ผู้ที่ใช้แอปที่สร้างด้วย `kotaemon` - (คุณใช้แอปแบบเดียวกับในการสาธิตด้านบน) || - - นักพัฒนา: ผู้ที่สร้างด้วย `kotaemon` - - - (คุณมี `import kotaemon` ที่ไหนสักแห่งในโครงการของคุณ) | - - - - - - ผู้ร่วมให้ข้อมูล: ผู้ที่ทำให้ `โคทาเอมอน` ดีขึ้น - - - - - (คุณทำการประชาสัมพันธ์ repo นี้) | - - - - - -
UI ที่สะอาดตาและเรียบง่าย : อินเทอร์เฟซที่ใช้งานง่ายสำหรับ QA ที่ใช้ RAG
รองรับ LLM ต่างๆ : เข้ากันได้กับผู้ให้บริการ LLM API (OpenAI, AzureOpenAI, Cohere ฯลฯ) และ LLM ท้องถิ่น (ผ่าน ollama
และ llama-cpp-python
)
ติดตั้งง่าย : สคริปต์ง่ายๆ เพื่อให้คุณเริ่มต้นได้อย่างรวดเร็ว
กรอบงานสำหรับไปป์ไลน์ RAG : เครื่องมือในการสร้างไปป์ไลน์ QA เอกสารที่ใช้ RAG ของคุณเอง
UI ที่ปรับแต่งได้ : ดูการทำงานของไปป์ไลน์ RAG ของคุณด้วย UI ที่ให้มาซึ่งสร้างด้วย Gradio
ธีม Gradio : หากคุณใช้ Gradio เพื่อการพัฒนา โปรดดูธีมของเราที่นี่: kotaemon-gradio-theme
โฮสต์เอกสารของคุณเอง QA (RAG) web-UI : รองรับการเข้าสู่ระบบแบบหลายผู้ใช้ จัดระเบียบไฟล์ของคุณในคอลเลกชันส่วนตัว/สาธารณะ ทำงานร่วมกันและแบ่งปันการสนทนาที่คุณชื่นชอบกับผู้อื่น
จัดระเบียบ LLM และโมเดลการฝังของคุณ : รองรับทั้ง LLM ในพื้นที่และผู้ให้บริการ API ยอดนิยม (OpenAI, Azure, Ollama, Groq)
ไปป์ไลน์ RAG แบบไฮบริด : ไปป์ไลน์ RAG เริ่มต้นที่มีสติพร้อมตัวดึงข้อมูลแบบไฮบริด (ข้อความแบบเต็มและเวกเตอร์) และการจัดอันดับใหม่เพื่อให้มั่นใจถึงคุณภาพการดึงข้อมูลที่ดีที่สุด
การสนับสนุน QA หลายรูปแบบ : ดำเนินการตอบคำถามในเอกสารหลายฉบับพร้อมการรองรับรูปภาพและตาราง รองรับการแยกวิเคราะห์เอกสารหลายรูปแบบ (ตัวเลือกที่สามารถเลือกได้บน UI)
การอ้างอิงขั้นสูงพร้อมการแสดงตัวอย่างเอกสาร : ตามค่าเริ่มต้น ระบบจะให้การอ้างอิงโดยละเอียดเพื่อให้แน่ใจว่าคำตอบ LLM ถูกต้อง ดูการอ้างอิงของคุณ (รวมคะแนนที่เกี่ยวข้อง) ได้โดยตรงใน โปรแกรมดู PDF ในเบราว์เซอร์ พร้อมไฮไลต์ คำเตือนเมื่อไปป์ไลน์การดึงข้อมูลส่งคืนบทความที่เกี่ยวข้องต่ำ
สนับสนุนวิธีการให้เหตุผลที่ซับซ้อน : ใช้การแบ่งย่อยคำถามเพื่อตอบคำถามที่ซับซ้อน/หลายฮอปของคุณ สนับสนุนการให้เหตุผลตามตัวแทนด้วย ReAct
, ReWOO
และตัวแทนอื่นๆ
UI การตั้งค่าที่กำหนดค่าได้ : คุณสามารถปรับส่วนที่สำคัญที่สุดของกระบวนการดึงข้อมูลและการสร้างบน UI ได้ (รวมถึงข้อความแจ้ง)
ขยายได้ : เมื่อสร้างบน Gradio คุณสามารถปรับแต่งหรือเพิ่มองค์ประกอบ UI ได้ตามต้องการ นอกจากนี้เรายังมุ่งหวังที่จะสนับสนุนกลยุทธ์ต่างๆ สำหรับการจัดทำดัชนีและการเรียกค้นเอกสาร ไปป์ไลน์การจัดทำดัชนี GraphRAG
มีให้เป็นตัวอย่าง
หากคุณไม่ใช่นักพัฒนาซอฟต์แวร์และเพียงต้องการใช้แอป โปรดอ่านคู่มือผู้ใช้ที่ปฏิบัติตามง่ายของเรา ดาวน์โหลดไฟล์
.zip
จากรุ่นล่าสุดเพื่อรับฟีเจอร์ใหม่ล่าสุดและการแก้ไขข้อบกพร่อง
หลาม >= 3.10
นักเทียบท่า: เป็นทางเลือก หากคุณติดตั้งด้วยนักเทียบท่า
ไม่มีโครงสร้าง หากคุณต้องการประมวลผลไฟล์อื่นที่ไม่ใช่เอกสาร .pdf
, .html
, .mhtml
และ .xlsx
ขั้นตอนการติดตั้งจะแตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการของคุณ โปรดไปที่ลิงก์และปฏิบัติตามคำแนะนำเฉพาะที่ให้ไว้
เรารองรับอิมเมจ Docker ทั้ง lite
และเวอร์ชัน full
ด้วย full
แพ็คเกจพิเศษที่ unstructured
จะได้รับการติดตั้งเช่นกัน ซึ่งสามารถรองรับไฟล์ประเภทเพิ่มเติม ( .doc
, .docx
, ... ) แต่ค่าใช้จ่ายคือขนาดอิมเมจนักเทียบท่าที่ใหญ่กว่า สำหรับผู้ใช้ส่วนใหญ่ รูปภาพ lite
ควรทำงานได้ดีในกรณีส่วนใหญ่
หากต้องการใช้เวอร์ชัน lite
นักเทียบท่าวิ่ง -e GRADIO_SERVER_NAME=0.0.0.0 -อี GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/cinnamon/kotaemon:main-lite
หากต้องการใช้เวอร์ชัน full
นักเทียบท่าวิ่ง -e GRADIO_SERVER_NAME=0.0.0.0 -อี GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/cinnamon/kotaemon:main-full
ขณะนี้เรารองรับและทดสอบสองแพลตฟอร์ม: linux/amd64
และ linux/arm64
(สำหรับ Mac รุ่นใหม่) คุณสามารถระบุแพลตฟอร์มได้โดยส่ง --platform
ในคำสั่ง docker run
ตัวอย่างเช่น:
# หากต้องการรันนักเทียบท่าด้วยแพลตฟอร์ม linux/arm64docker ให้รัน -e GRADIO_SERVER_NAME=0.0.0.0 -อี GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm --แพลตฟอร์มลินุกซ์/arm64 ghcr.io/cinnamon/kotaemon:main-lite
เมื่อทุกอย่างถูกต้องแล้ว คุณสามารถไปที่ http://localhost:7860/
เพื่อเข้าถึง WebUI
เราใช้ GHCR เพื่อจัดเก็บภาพนักเทียบท่า สามารถดูภาพทั้งหมดได้ที่นี่
โคลนและติดตั้งแพ็คเกจที่จำเป็นบนสภาพแวดล้อม Python ใหม่
# ตัวเลือก (ตั้งค่า env) conda create -n kotaemon python=3.10 conda เปิดใช้งาน kotaemon# โคลนโคลน repogit นี้ https://github.com/Cinnamon/kotaemoncd kotaemon pip ติดตั้ง -e "libs/kotaemon[ทั้งหมด]"pip ติดตั้ง -e "libs/ktem"
สร้างไฟล์ .env
ในรากของโปรเจ็กต์นี้ ใช้ .env.example
เป็นเทมเพลต
ไฟล์ .env
มีไว้เพื่อรองรับกรณีการใช้งานที่ผู้ใช้ต้องการกำหนดค่าโมเดลล่วงหน้าก่อนที่จะเริ่มแอป (เช่น ปรับใช้แอปบนฮับ HF) ไฟล์จะถูกใช้เพื่อเติมฐานข้อมูลเพียงครั้งเดียวในการรันครั้งแรกเท่านั้น โดยจะไม่ถูกใช้ในการรันครั้งต่อๆ ไปอีกต่อไป
(ไม่บังคับ) หากต้องการเปิดใช้งานโปรแกรมดู PDF_JS
ในเบราว์เซอร์ ให้ดาวน์โหลด PDF_JS_DIST จากนั้นแตกไฟล์ไปที่ libs/ktem/ktem/assets/prebuilt
เริ่มเว็บเซิร์ฟเวอร์:
หลาม app.py
แอปจะเปิดขึ้นโดยอัตโนมัติในเบราว์เซอร์ของคุณ
ชื่อผู้ใช้และรหัสผ่านเริ่มต้นเป็นทั้ง admin
คุณสามารถตั้งค่าผู้ใช้เพิ่มเติมได้โดยตรงผ่าน UI
ตรวจสอบแท็บ Resources
และ LLMs and Embeddings
และตรวจสอบว่าค่า api_key
ของคุณได้รับการตั้งค่าอย่างถูกต้องจากไฟล์ .env
หากไม่ได้ตั้งค่า คุณสามารถตั้งค่าที่นั่นได้
บันทึก
การทำดัชนี MS GraphRAG อย่างเป็นทางการใช้ได้กับ OpenAI หรือ Ollama API เท่านั้น เราแนะนำให้ผู้ใช้ส่วนใหญ่ใช้งาน NanoGraphRAG เพื่อบูรณาการกับ Kotaemon อย่างตรงไปตรงมา
ติดตั้ง nano-GraphRAG: pip install nano-graphrag
การติดตั้ง nano-graphrag
อาจทำให้เกิดความขัดแย้งของเวอร์ชัน โปรดดูปัญหานี้
วิธีแก้ไขอย่างรวดเร็ว: pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
เรียกใช้ Kotaemon ด้วย USE_NANO_GRAPHRAG=true
ตั้งค่าเริ่มต้นของ LLM & Embedding models ในการตั้งค่า Resources จากนั้นระบบจะรับรู้โดยอัตโนมัติจาก NanoGraphRAG
การติดตั้งแบบไม่ใช้ Docker : หากคุณไม่ได้ใช้ Docker ให้ติดตั้ง GraphRAG ด้วยคำสั่งต่อไปนี้:
pip ติดตั้ง Graphrag ในอนาคต
การตั้งค่าคีย์ API : หากต้องการใช้คุณลักษณะตัวดึงข้อมูล GraphRAG ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าตัวแปรสภาพแวดล้อม GRAPHRAG_API_KEY
คุณสามารถดำเนินการนี้ได้โดยตรงในสภาพแวดล้อมของคุณ หรือโดยการเพิ่มลงในไฟล์ . .env
การใช้โมเดลในเครื่องและการตั้งค่าแบบกำหนดเอง : หากคุณต้องการใช้ GraphRAG กับโมเดลในเครื่อง (เช่น Ollama
) หรือปรับแต่ง LLM เริ่มต้นและการกำหนดค่าอื่น ๆ ให้ตั้งค่าตัวแปรสภาพแวดล้อม USE_CUSTOMIZED_GRAPHRAG_SETTING
ให้เป็นจริง จากนั้น ปรับการตั้งค่าในไฟล์ settings.yaml.example
ดูการตั้งค่าโมเดลในเครื่อง
ตามค่าเริ่มต้น ข้อมูลแอปพลิเคชันทั้งหมดจะถูกจัดเก็บไว้ในโฟลเดอร์ ./ktem_app_data
คุณสามารถสำรองหรือคัดลอกโฟลเดอร์นี้เพื่อถ่ายโอนการติดตั้งของคุณไปยังเครื่องใหม่
สำหรับผู้ใช้ขั้นสูงหรือกรณีการใช้งานเฉพาะ คุณสามารถปรับแต่งไฟล์เหล่านี้ได้:
flowsettings.py
.env
flowsettings.py
ไฟล์นี้มีการกำหนดค่าแอปพลิเคชันของคุณ คุณสามารถใช้ตัวอย่างที่นี่เป็นจุดเริ่มต้น
# ตั้งค่าที่เก็บเอกสารที่คุณต้องการ (พร้อมความสามารถในการค้นหาข้อความแบบเต็ม)KH_DOCSTORE=(Elasticsearch | LanceDB | SimpleFileDocumentStore)# ตั้งค่า vectorstore ที่คุณต้องการ (สำหรับการค้นหาแบบเวกเตอร์)KH_VECTORSTORE=(ChromaDB | LanceDB | InMemory | Qdrant)# เปิด / ปิดการใช้งาน multimodal QAKH_REASONINGS_USE_MULTIMODAL=True# ตั้งค่าไปป์ไลน์การให้เหตุผลใหม่ของคุณหรือแก้ไขไปป์ไลน์การให้เหตุผลใหม่ที่มีอยู่ KH_REASONINGS = ["ktem.reasoning.simple.FullQAPipeline", "ktem.reasoning.simple.FullDecomposeQAPipeline", "ktem.reasoning.react.ReactAgentPipeline", "ktem .reasoning.rewoo.RewooAgentPipeline", -
.env
ไฟล์นี้เป็นอีกวิธีหนึ่งในการกำหนดค่าโมเดลและข้อมูลรับรองของคุณ
หรือคุณสามารถกำหนดค่าโมเดลผ่านไฟล์ .env
พร้อมด้วยข้อมูลที่จำเป็นในการเชื่อมต่อกับ LLM ไฟล์นี้อยู่ในโฟลเดอร์ของแอปพลิเคชัน หากคุณไม่เห็น คุณสามารถสร้างได้
ปัจจุบันผู้ให้บริการต่อไปนี้ได้รับการสนับสนุน:
การใช้เซิร์ฟเวอร์ที่รองรับ ollama
OpenAI:
ใช้ GGUF
กับ llama-cpp-python
คุณสามารถค้นหาและดาวน์โหลด LLM เพื่อเรียกใช้ในเครื่องได้จาก Hugging Face Hub ในปัจจุบัน รูปแบบโมเดลเหล่านี้ได้รับการสนับสนุน:
ติดตั้ง ollama และเริ่มแอปพลิเคชัน
ดึงโมเดลของคุณ เช่น:
โอลามะ ดึง ลามะ3.1:8b ollama pull nomic-embed-text
ตั้งชื่อโมเดลบน UI ของเว็บและทำให้เป็นค่าเริ่มต้น:
จีจีเอฟ
คุณควรเลือกรุ่นที่มีขนาดน้อยกว่าหน่วยความจำของอุปกรณ์และควรมีพื้นที่เหลือประมาณ 2 GB ตัวอย่างเช่น หากคุณมี RAM ทั้งหมด 16 GB โดยมีให้เลือก 12 GB คุณควรเลือกรุ่นที่ใช้ RAM สูงสุด 10 GB โมเดลที่ใหญ่กว่ามักจะให้รุ่นที่ดีกว่าแต่ยังใช้เวลาในการประมวลผลมากกว่าด้วย
ต่อไปนี้คือคำแนะนำบางส่วนและขนาดในหน่วยความจำ:
Qwen1.5-1.8B-Chat-GGUF: ประมาณ 2 GB
เพิ่มโมเดล LlamaCpp ใหม่พร้อมชื่อโมเดลที่ให้ไว้บน UI ของเว็บ
OpenAI
ในไฟล์ .env
ให้ตั้งค่าตัวแปร OPENAI_API_KEY
ด้วยคีย์ OpenAI API ของคุณเพื่อให้สามารถเข้าถึงโมเดลของ OpenAI ได้ มีตัวแปรอื่น ๆ ที่สามารถแก้ไขได้ โปรดแก้ไขให้เหมาะกับกรณีของคุณ มิฉะนั้น พารามิเตอร์เริ่มต้นควรจะใช้ได้กับคนส่วนใหญ่
OPENAI_API_BASE=https://api.openai.com/v1 OPENAI_API_KEY=<คีย์ OpenAI API ของคุณที่นี่>OPENAI_CHAT_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=การฝังข้อความ-ada-002
อาซัวร์ โอเพ่นเอไอ
สำหรับโมเดล OpenAI ผ่านแพลตฟอร์ม Azure คุณต้องระบุตำแหน่งข้อมูล Azure และคีย์ API ของคุณ คุณอาจต้องระบุชื่อการพัฒนาของคุณสำหรับโมเดลการแชทและโมเดลการฝัง ขึ้นอยู่กับวิธีที่คุณตั้งค่าการพัฒนา Azure
AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= OPENAI_API_VERSION=2024-02-15-ดูตัวอย่าง AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-35-เทอร์โบ AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT=การฝังข้อความ-ada-002
โมเดลท้องถิ่น
ตรวจสอบการใช้งานไปป์ไลน์เริ่มต้นที่นี่ คุณสามารถปรับเปลี่ยนวิธีการทำงานของไปป์ไลน์ QA เริ่มต้นได้อย่างรวดเร็ว
เพิ่มการใช้งาน .py
ใหม่ใน libs/ktem/ktem/reasoning/
และรวมไว้ใน flowssettings
ในภายหลังเพื่อเปิดใช้งานบน UI
ตรวจสอบการใช้งานตัวอย่างใน libs/ktem/ktem/index/file/graph
(คำแนะนำเพิ่มเติม WIP)
เนื่องจากโครงการของเราได้รับการพัฒนาอย่างแข็งขัน เราจึงให้ความสำคัญกับความคิดเห็นและการมีส่วนร่วมของคุณเป็นอย่างมาก โปรดดูคู่มือการสนับสนุนของเราเพื่อเริ่มต้น ขอขอบคุณผู้ร่วมให้ข้อมูลของเราทุกคน!