Chroma เป็นแอพพลิเคชั่นฐานข้อมูลที่ถูกฝังอยู่ในโค้ดของเราในรูปแบบของแพ็คเกจ ความได้เปรียบของ Chroma คือความง่าย หากคุณต้องการฐานข้อมูลเวกเตอร์เพื่อใช้ในการดำเนินการพื้นที่ความจำ LLM ในการพัฒนาแอปพลิเคชั่น LLM มันรองรับการค้นหาภาษาคล้ายกันในข้อความ และหากคุณไม่ต้องการติดตั้งฐานข้อมูลเวกเตอร์แยกต่างหาก Chroma คือตัวเลือกที่ดี ปัจจุบันไลบรารี Chroma รองรับภาษา Python และ JavaScript บทความนี้มีพื้นฐานคลาสซึ่งอยู่บน Python

1. ติดตั้ง Chromadb

pip install chromadb

หมายเหตุ: เวอร์ชันปัจจุบันของ chromadb ไม่รองรับ Python 3.11 แนะนำให้ downgrade เวอร์ชันของ python

2. กำหนดค่าเริ่มต้นสำหรับลูกค้าของ Chroma

import chromadb
chroma_client = chromadb.Client()

3. สร้างคอลเลคชัน

คอลเลคชันคล้ายกับตารางในฐานข้อมูล Chroma ที่จะเก็บข้อมูลเวกเตอร์ (รวมถึงเอกสารและข้อมูลต้นฉบับอื่น ๆ) สร้างคอลเลคชันดังนี้:

collection = chroma_client.create_collection(name="tizi365")

4. เพิ่มข้อมูล

หลังจากกำหนดค่าคอลเลคชันแล้ว ทาง Chroma จะจัดเก็บข้อมูลของเราและสร้างดัชนีเฉพาะของเวกเตอร์ของข้อมูลข้อความเพื่อการค้นหาที่สะดวกในภายหลัง

4.1 คำนวณเวกเตอร์โดยใช้โมเดลที่ฝังอยู่ภายใน

collection.add(
    documents=["นี่เป็นเอกสาร", "นี่คือเอกสารอีกชิ้น"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

4.2 ระบุค่าเวกเตอร์เมื่อเพิ่มข้อมูล

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["นี่เป็นเอกสาร", "นี่คือเอกสารอีกชิ้น"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

5. ค้นหาข้อมูล

ตอนนี้คุณสามารถค้นหาเนื้อหาข้อความที่คล้ายกัน และ Chroma จะส่งคืนผลลัพธ์ที่คล้ายกัน "n" รายการ ด้านล่างเป็นตัวอย่างการค้นหาเนื้อหาเอกสารที่คล้ายกันตามพารามิเตอร์การค้นหาเนื้อหาเอกสาร:

results = collection.query(
    query_texts=["นี่คือเอกสารค้นหา"],
    n_results=2
)

ตามค่าเริ่มต้น ข้อมูลใน Chroma ถูกจัดเก็บในหน่วยความจำ ดังนั้นข้อมูลจะสูญหายเมื่อโปรแกรมถูกเริ่มต้นใหม่ แน่นอน คุณสามารถกำหนด Chroma เพื่อเก็บข้อมูลในฮาร์ดดิสก์ ดังนั้นโปรแกรมจะโหลดข้อมูลจากดิสก์เมื่อเริ่มต้นใช้งาน