บันทึก
ทีมหลังคาไม่ได้ดูแลที่เก็บนี้อีกต่อไป ขอบคุณสำหรับการสนับสนุนและความกระตือรือร้นสำหรับโครงการ! หากคุณกำลังมองหาโซลูชัน RAG ที่มีคุณภาพสูงพร้อมการอัปเดตและการปรับปรุงอย่างต่อเนื่องโปรดตรวจสอบผู้ช่วย Pinecone
Canopy เป็นเฟรมเวิร์ก Augmented Generation (RAG) โอเพนซอร์ซแบบโอเพนซอร์ซ Canopy ช่วยให้คุณสามารถทดลองและสร้างแอปพลิเคชันได้อย่างรวดเร็วและง่ายดายโดยใช้ RAG เริ่มแชทกับเอกสารหรือข้อมูลข้อความของคุณด้วยคำสั่งง่ายๆ
Canopy ใช้เวลาในการยกของแอปพลิเคชันผ้าขี้ริ้ว: จากการตีและการฝังข้อมูลข้อความของคุณไปจนถึงการจัดการประวัติการแชทการเพิ่มประสิทธิภาพแบบสอบถามการดึงบริบท (รวมถึงวิศวกรรมที่รวดเร็ว)
Canopy ให้บริการเซิร์ฟเวอร์ในตัวที่กำหนดค่าได้เพื่อให้คุณสามารถปรับใช้แอปพลิเคชันแชทที่ใช้ RAG ได้อย่างง่ายดายกับแชท UI หรืออินเทอร์เฟซที่มีอยู่ของคุณ หรือคุณสามารถสร้างแอปพลิเคชัน RAG แบบกำหนดเองของคุณเองโดยใช้ไลบรารีหลังคา
Canopy ช่วยให้คุณประเมินเวิร์กโฟลว์ RAG ของคุณด้วยเครื่องมือแชทตาม CLI ด้วยคำสั่งง่ายๆใน CANOPY CLI คุณสามารถแชทแบบโต้ตอบกับข้อมูลข้อความของคุณและเปรียบเทียบ RAG กับเวิร์กโฟลว์ที่ไม่ใช่ RAG เคียงข้างกัน
ตรวจสอบโพสต์บล็อกของเราเพื่อเรียนรู้เพิ่มเติมหรือดูการสอนด่วนที่นี่

Canopy ใช้เวิร์กโฟลว์ RAG เต็มรูปแบบเพื่อป้องกันภาพหลอนและเพิ่ม LLM ของคุณด้วยข้อมูลข้อความของคุณเอง
หลังคามีสองกระแส: การสร้างฐานความรู้และการแชท ในโฟลว์การสร้างฐานความรู้ผู้ใช้อัปโหลดเอกสารและแปลงเป็นตัวแทนที่มีความหมายที่เก็บไว้ในฐานข้อมูลเวกเตอร์ของ Pinecone ในการแชทโฟลว์การสืบค้นที่เข้ามาและประวัติการแชทได้รับการปรับให้เหมาะสมเพื่อดึงเอกสารที่เกี่ยวข้องมากที่สุดฐานความรู้จะถูกสอบถามและบริบทที่มีความหมายจะถูกสร้างขึ้นสำหรับ LLM เพื่อตอบ
ChatEngine ได้กำหนดคำสั่งที่เกี่ยวข้องกับ ContextEngine จากนั้นใช้ LLM เพื่อสร้างการตอบสนองที่มีความรู้ContextEngine ใช้ฐาน KnowledgeBase พื้นฐานเพื่อดึงเอกสารที่เกี่ยวข้องมากที่สุดจากนั้นกำหนดบริบทเชิงข้อความที่สอดคล้องกันเพื่อใช้เป็นพรอมต์สำหรับ LLMข้อมูลเพิ่มเติมเกี่ยวกับการใช้ห้องสมุดหลักสามารถพบได้ในเอกสารประกอบห้องสมุด
Canopy Server - นี่คือเว็บเซอร์วิสที่ห่อหุ้มห้องสมุด Canopy Core และเปิดเผยว่าเป็น REST API เซิร์ฟเวอร์ถูกสร้างขึ้นบน Fastapi, Uvicorn และ Gunicorn และสามารถนำไปใช้งานได้ง่ายในการผลิต เซิร์ฟเวอร์ยังมาพร้อมกับ UI ในตัวสำหรับการทดสอบและเอกสารประกอบที่ง่าย หลังจากที่คุณเริ่มเซิร์ฟเวอร์คุณสามารถเข้าถึง Swagger UI ได้ที่ http://host:port/docs (ค่าเริ่มต้น: http://localhost:8000/docs )
CANOPY CLI - เครื่องมือการพัฒนาในตัวที่ช่วยให้ผู้ใช้สามารถตั้งค่าเซิร์ฟเวอร์หลังคาของตัวเองได้อย่างรวดเร็วและทดสอบการกำหนดค่า
ด้วยคำสั่ง CLI เพียงสามคำสั่งคุณสามารถสร้างเซิร์ฟเวอร์หลังคาใหม่อัปโหลดเอกสารของคุณไปยังมันจากนั้นโต้ตอบกับ chatbot โดยใช้แอปพลิเคชันแชทในตัวโดยตรงจากเทอร์มินัล chatbot ในตัวยังช่วยให้สามารถเปรียบเทียบการตอบสนอง RAG-infused กับ LLM chatbot ดั้งเดิม
python3 -m venv canopy-env
source canopy-env/bin/activateข้อมูลเพิ่มเติมเกี่ยวกับสภาพแวดล้อมเสมือนจริงสามารถดูได้ที่นี่
pip install canopy-sdk| ชื่อ | คำอธิบาย |
|---|---|
grpc | เพื่อปลดล็อกการปรับปรุงประสิทธิภาพบางอย่างโดยทำงานกับไคลเอนต์ Pinecone เวอร์ชัน GRPC |
torch | เพื่อเปิดใช้งาน embeddings ที่จัดทำโดยผู้เปลี่ยนประโยค |
transformers | หากคุณใช้ Anyscale LLMS ขอแนะนำให้ใช้ LLamaTokenizer tokenizer ซึ่งต้องใช้หม้อแปลงเป็นการพึ่งพา |
cohere | เพื่อใช้ Cohere Reranker หรือ/และ Cohere LLM |
qdrant | เพื่อใช้ qdrant เป็นฐานความรู้ทางเลือก |
export PINECONE_API_KEY= " <PINECONE_API_KEY> "
export OPENAI_API_KEY= " <OPENAI_API_KEY> "
export INDEX_NAME= " <INDEX_NAME> "| ชื่อ | คำอธิบาย | จะรับได้อย่างไร? |
|---|---|---|
PINECONE_API_KEY | คีย์ API สำหรับ Pinecone ใช้เพื่อรับรองความถูกต้องของบริการ Pinecone เพื่อสร้างดัชนีและเพื่อแทรกลบและค้นหาข้อมูล | ลงทะเบียนหรือเข้าสู่บัญชี Pinecone ของคุณในคอนโซล คุณสามารถเข้าถึงคีย์ API ของคุณได้จากส่วน "API Keys" ในแถบด้านข้างของแผงควบคุมของคุณ |
OPENAI_API_KEY | คีย์ API สำหรับ openai ใช้เพื่อรับรองความถูกต้องของบริการของ OpenAI สำหรับการฝังและแชท API | คุณสามารถค้นหาคีย์ OpenAI API ของคุณได้ที่นี่ คุณอาจต้องเข้าสู่ระบบหรือลงทะเบียนกับ OpenAI Services |
INDEX_NAME | ชื่อของดัชนี Pinecone Canopy จะทำงานกับ | คุณสามารถเลือกชื่อใดก็ได้ตราบเท่าที่มันเป็นไปตามข้อ จำกัด ของ Pinecone |
CANOPY_CONFIG_FILE | พา ธ ของไฟล์การกำหนดค่า YAML ที่จะใช้โดยเซิร์ฟเวอร์หลังคา | เป็นทางเลือก - หากไม่ได้ให้การกำหนดค่าเริ่มต้นจะถูกนำมาใช้ |
ตัวแปรสภาพแวดล้อมที่เป็นตัวเลือกเหล่านี้ใช้เพื่อรับรองความถูกต้องกับบริการที่รองรับอื่น ๆ สำหรับการฝังและ LLMS หากคุณกำหนดค่า Canopy ให้ใช้ผู้ให้บริการเหล่านี้ - คุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง
| ชื่อ | คำอธิบาย | จะรับได้อย่างไร? |
|---|---|---|
ANYSCALE_API_KEY | คีย์ API สำหรับ AnyScale ใช้ในการตรวจสอบสิทธิ์ไปยังจุดสิ้นสุดใด ๆ สำหรับโอเพนซอร์ส LLMS | คุณสามารถลงทะเบียนจุดสิ้นสุดใด ๆ และค้นหาคีย์ API ของคุณได้ที่นี่ |
CO_API_KEY | คีย์ API สำหรับ Cohere ใช้ในการตรวจสอบความถูกต้องของการบริการสำหรับการฝัง | คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการลงทะเบียนเพื่อเชื่อมโยงได้ที่นี่ |
JINA_API_KEY | คีย์ API สำหรับ Jina Ai ใช้ในการตรวจสอบความถูกต้องของบริการของ Jinaai สำหรับการฝังและแชท API | คุณสามารถค้นหาคีย์ OpenAI API ของคุณได้ที่นี่ คุณอาจต้องเข้าสู่ระบบหรือลงทะเบียนกับ OpenAI Services |
AZURE_OPENAI_ENDOINT | URL ของจุดสิ้นสุดของ Azure Openai ที่คุณปรับใช้ | คุณสามารถค้นหาสิ่งนี้ได้ในพอร์ทัล Azure Openai ภายใต้ _Keys และจุดสิ้นสุด ' |
AZURE_OPENAI_API_KEY | คีย์ API ที่จะใช้สำหรับรุ่น Azure OpenAI ของคุณ | คุณสามารถค้นหาสิ่งนี้ได้ในพอร์ทัล Azure Openai ภายใต้ _Keys และจุดสิ้นสุด ' |
OCTOAI_API_KEY | คีย์ API สำหรับ Octoai ใช้เพื่อตรวจสอบสิทธิ์สำหรับ LLM โอเพนซอร์สที่เสิร์ฟใน Octoai | คุณสามารถลงทะเบียนสำหรับ Octoai และค้นหารหัส API ของคุณได้ที่นี่ |
canopyเอาต์พุตควรคล้ายกับนี้:
Canopy: Ready
Usage: canopy [OPTIONS] COMMAND [ARGS]...
# rest of the help message ใน quickstart นี้เราจะแสดงวิธีการใช้ canopy เพื่อสร้างระบบตอบคำถามง่ายๆโดยใช้ RAG (Generation เพิ่มการดึง)
ในการตั้งค่าครั้งเดียว Canopy จำเป็นต้องสร้างดัชนี Pinecone ใหม่ที่กำหนดค่าให้ทำงานกับ Canopy เพียงแค่เรียกใช้:
canopy new และทำตามคำแนะนำ CLI ดัชนีที่จะถูกสร้างจะมี canopy--<INDEX_NAME>
คุณต้องทำกระบวนการนี้เพียงครั้งเดียวสำหรับดัชนีหลังคาทุกครั้งที่คุณต้องการสร้าง
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับดัชนี Pinecone และวิธีการจัดการโปรดดูคำแนะนำต่อไปนี้: การทำความเข้าใจดัชนี
คุณสามารถโหลดข้อมูลลงในดัชนีหลังคาของคุณโดยใช้คำสั่ง:
canopy upsert /path/to/data_directory
# or
canopy upsert /path/to/data_directory/file.parquet
# or
canopy upsert /path/to/data_directory/file.jsonl
# or
canopy upsert /path/to/directory_of_txt_files/
# ... Canopy รองรับไฟล์ในรูปแบบ jsonl , parquet และ csv นอกจากนี้คุณสามารถโหลดไฟล์ข้อมูล plaintext ในรูปแบบ. .txt ในกรณีนี้แต่ละไฟล์จะได้รับการปฏิบัติเป็นเอกสารเดียว รหัสเอกสารจะเป็นชื่อไฟล์และแหล่งที่มาจะเป็นเส้นทางเต็มของไฟล์
หมายเหตุ : ฟิลด์เอกสารถูกใช้ในการไหลของ RAG และควรปฏิบัติตามสคีมาต่อไปนี้:
+----------+--------------+--------------+---------------+
| id(str) | text(str) | source | metadata |
| | | Optional[str] | Optional[dict] |
| ----------+--------------+--------------+--------------- |
| " id1 " | " some text " | " some source " | { " key " : " val " } |
+----------+--------------+--------------+---------------+
# id - unique identifier for the document
#
# text - the text of the document, in utf-8 encoding.
#
# source - the source of the document, can be any string, or null.
# ** this will be used as a reference in the generated context. **
#
# metadata - optional metadata for the document, for filtering or additional context.
# Dict[str, Union[str, int, float, List[str]]]สมุดบันทึกนี้แสดงวิธีการสร้างชุดข้อมูลในรูปแบบนี้ให้ทำตามคำแนะนำใน CLI เมื่อคุณอัปโหลดข้อมูลของคุณ
เคล็ดลับ
หากคุณต้องการแยกข้อมูลของคุณออกเป็นเนมสเปซคุณสามารถใช้ตัวเลือก --namespace หรือตัวแปรสภาพแวดล้อม INDEX_NAMESPACE
เซิร์ฟเวอร์ Canopy เปิดเผยฟังก์ชั่นของ Canopy ผ่านทาง API REST กล่าวคือช่วยให้คุณอัปโหลดเอกสารดึงเอกสารที่เกี่ยวข้องสำหรับการสืบค้นที่กำหนดและแชทกับข้อมูลของคุณ เซิร์ฟเวอร์เปิดเผยจุดสิ้นสุดของ A /chat.completion ที่สามารถรวมเข้ากับแอปพลิเคชันแชทได้อย่างง่ายดาย ในการเริ่มต้นเซิร์ฟเวอร์ให้เรียกใช้:
canopy startตอนนี้คุณควรได้รับการแจ้งเตือนด้วยข้อความ uvicorn มาตรฐานต่อไปนี้:
...
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
แค่ไหน! ตอนนี้คุณสามารถเริ่มใช้เซิร์ฟเวอร์ Canopy ด้วยแอปพลิเคชันแชทใด ๆ ที่รองรับจุดสิ้นสุดของ A /chat.completion
คำสั่งเริ่มต้นหลังคาจะทำให้เทอร์มินัลถูกครอบครอง (การใช้งานที่แนะนำ) หากคุณต้องการเรียกใช้เซิร์ฟเวอร์ในพื้นหลังคุณสามารถใช้คำสั่งต่อไปนี้ -
nohup canopy start &
หากต้องการหยุดเซิร์ฟเวอร์เพียงกด CTRL+C ในเทอร์มินัลที่คุณเริ่มต้น
CLI ของ Canopy มาพร้อมกับแอพแชทในตัวที่ช่วยให้คุณสามารถแชทกับข้อมูลข้อความของคุณได้และเปรียบเทียบ RAG กับเวิร์กโฟลว์ที่ไม่ใช่ RAG แบบเคียงข้างกันเพื่อประเมินผลลัพธ์
ในหน้าต่างเทอร์มินัลใหม่ตั้งค่าตัวแปรสภาพแวดล้อมที่ต้องการแล้วเรียกใช้:
canopy chatสิ่งนี้จะเปิดอินเทอร์เฟซแชทในเทอร์มินัลของคุณ คุณสามารถถามคำถามและแชทบ็อตที่ใช้ผ้าขี้ริ้วจะพยายามตอบคำถามโดยใช้ข้อมูลที่คุณอัปโหลด
เพื่อเปรียบเทียบการตอบสนองการแชทที่มีและไม่มี RAG ให้ใช้ธง --no-rag
หมายเหตุ : วิธีนี้รองรับ OpenAI เท่านั้นในขณะนี้
canopy chat --no-ragสิ่งนี้จะเปิดหน้าต่างแชทอินเตอร์เฟสที่คล้ายกัน แต่จะแสดงทั้งการตอบสนอง RAG และ NON-RAG แบบเคียงข้างกัน
ขอบคุณที่พิจารณาการมีส่วนร่วมในการพุ่งขึ้น! โปรดดูแนวทางการสนับสนุนของเราสำหรับข้อมูลเพิ่มเติม
หากคุณมีแอปพลิเคชันที่ใช้ OpenAI API อยู่แล้วคุณสามารถโยกย้ายไปยัง Canopy ได้เพียงแค่เปลี่ยนจุดสิ้นสุด API เป็น http://host:port/v1 ตัวอย่างเช่นการกำหนดค่าเริ่มต้น:
from openai import OpenAI
client = OpenAI ( base_url = "http://localhost:8000/v1" )หากคุณต้องการใช้เนมสเปซดัชนีเฉพาะสำหรับการแชทคุณสามารถต่อท้ายเนมสเปซเข้ากับจุดสิ้นสุด API:
from openai import OpenAI
client = OpenAI ( base_url = "http://localhost:8000/v1/my-namespace" ) Canopy ใช้ fastapi เป็น Web Framework และ Uvicorn เป็นเซิร์ฟเวอร์ ASGI
หากต้องการใช้ Canopy ในการผลิตขอแนะนำให้ใช้ Image Docker ของ Canopy ที่มีอยู่ในแพ็คเกจ GitHub สำหรับความต้องการการผลิตของคุณ
สำหรับคำแนะนำเกี่ยวกับการปรับใช้ Canopy บนแพลตฟอร์ม Google Cloud (GCP) โปรดดูตัวอย่างที่ให้ไว้ในเอกสารการปรับใช้กับเอกสาร GCP
หรือคุณสามารถใช้ Gunicorn เป็น WSGI เกรดการผลิตรายละเอียดเพิ่มเติมได้ที่นี่
ตั้งค่า PORT และ WORKER_COUNT envrionment ที่คุณต้องการและเริ่มต้นเซิร์ฟเวอร์ด้วย:
gunicorn canopy_server.app:app --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0: $PORT --workers $WORKER_COUNT สำคัญ
เซิร์ฟเวอร์โต้ตอบกับบริการเช่น Pinecone และ OpenAI โดยใช้ข้อมูลรับรองการรับรองความถูกต้องของคุณเอง เมื่อปรับใช้เซิร์ฟเวอร์บนผู้ให้บริการเว็บโฮสติ้งสาธารณะขอแนะนำให้เปิดใช้งานกลไกการรับรองความถูกต้องเพื่อให้เซิร์ฟเวอร์ของคุณจะใช้คำขอจากผู้ใช้ที่ได้รับการรับรองความถูกต้องเท่านั้น