การฝังลึก (Embeddings) หรือที่รู้จักกันในนาม Feature Vectors คือวิธีการของปัญญาประดิษฐ์ในการแสดงข้อมูลประเภทต่าง ๆ โดยทำให้เหมาะสมต่อการใช้กับเครื่องมือและอัลกอริทึมปัญญาประดิษฐ์ต่าง ๆ สามารถแสดงข้อมูลข้อความ ภาพ และเสียง รวมถึงวิดีโอได้อย่างมีประสิทธิภาพ มีหลายทางเลือกในการสร้างข้อมูล Feature Vector ซึ่งรวมถึงการใช้โมเดลการฝังข้อความโอเพ่นซอร์สและเรียกใช้ API จากบริการคลาวด์

Chroma มีการให้บริการ Wrapper ที่เบาสำหรับโมเดลการฝังลึกที่นิยม ทำให้ง่ายต่อการนำมาใช้ในแอปพลิเคชันของคุณ ในขณะสร้างคอลเลคชันของ Chroma คุณสามารถตั้งค่าฟังก์ชันการฝังของไปคำข้อความได้โดยอัตโนมัติเมื่อบันทึกและอัพเดทข้อมูลข้อความ

หมายเหตุ: คุณยังสามารถเลือกที่จะไม่ใช้ฟังก์ชันการฝังของ Chroma ในการคำนวณเวกเตอร์ คุณสามารถเลือกโมเดลการฝังข้อความใด ๆ เพื่อคำนวณข้อมูลเวกเตอร์ข้อความล่วงหน้า

เพื่อให้ได้ฟังก์ชันการฝังจาก Chroma คุณสามารถนำเข้าโมดูล embedding_functions จาก chromadb.utils

from chromadb.utils import embedding_functions

โมเดลเริ่มต้น: all-MiniLM-L6-v2

ตามค่าเริ่มต้น Chroma ใช้โมเดล all-MiniLM-L6-v2 จาก Sentence Transformers เพื่อคำนวณเวกเตอร์ โมเดลการฝังนี้สามารถสร้างเวกเตอร์ข้อความและเอกสาร ฟังก์ชันการฝังของโมเดลนี้ทำงานบนเครื่องท้องถิ่นและต้องการดาวน์โหลดไฟล์โมเดล (ซึ่งทำโดยอัตโนมัติ)

default_ef = embedding_functions.DefaultEmbeddingFunction()

โมเดล Transformers

Chroma ยังสามารถใช้โมเดล Sentence Transformers ใด ๆ เพื่อคำนวณเวกเตอร์

sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")

คุณสามารถส่งพารามิเตอร์ model_name ได้เพื่อเลือกโมเดล Sentence Transformers ที่คุณต้องการใช้ ตามค่าเริ่มต้น Chroma ใช้ all-MiniLM-L6-v2 คุณสามารถค้นหาชื่อโมเดลได้ที่ Hugging Face

โมเดล OpenAI

Chroma มีการให้บริการ Wrapper ที่สะดวกสบายสำหรับ OpenAI's embedding API นี้ต้องการเรียกใช้อินเตอร์เฟซของ OpenAI และคีย์ API คุณสามารถรับคีย์ API ได้โดยการลงทะเบียนบัญชี OpenAI

ฟังก์ชันการฝังนี้ขึ้นอยู่กับแพ็คเกจ openai ภาษาไพธอน ซึ่งสามารถติดตั้งได้โดยใช้ pip install openai

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="YOUR_API_KEY",
                model_name="text-embedding-ada-002"
            )

เพื่อใช้โมเดลการฝังของ OpenAI บนแพลตฟอร์มเช่น Azure คุณสามารถใช้พารามิเตอร์ api_base และ api_type

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="YOUR_API_KEY",
                api_base="YOUR_API_BASE_PATH",
                api_type="azure",
                model_name="text-embedding-ada-002"
            )

ฟังก์ชันการฝังที่กำหนดเอง

คุณสามารถสร้างฟังก์ชันการฝังที่กำหนดเองเพื่อใช้งานกับ Chroma โดยการทำการสร้างเมทอดของฐานคลาส EmbeddingFunction

from chromadb.api.types import Documents, EmbeddingFunction, Embeddings

class MyEmbeddingFunction(EmbeddingFunction):
    def __call__(self, texts: Documents) -> Embeddings:
        return embeddings