รุ่นการฝังข้อความ

รุ่นการฝังข้อความใช้ในการคำนวณผลลัพธ์เวกเตอร์ของข้อความ ที่นี่คำว่า "เวกเตอร์" หมายถึงเวกเตอร์ทางคณิตศาสตร์ หรือที่เรียกว่าเฟีเจอร์เวกเตอร์เช่นกัน ในฐานะนักพัฒนา ที่ควรรู้คือรุ่นการฝังข้อความสามารถคำนวณเฟีเจอร์เวกเตอร์ของข้อความแล้วด้วยการใช้การคำนวณความคล้ายเฉพาะของเวกเตอร์ เราสามารถระบุเนื้อหาข้อความที่มีลักษณะคล้ายกันได้ด้วยคำนวณความคล้ายเฉพาะของเวกเตอร์

คำแนะนำ: สำหรับความรู้พื้นฐานเกี่ยวกับรุ่นการฝังข้อความ โปรดอ่านบทนำสู่การใช้รุ่นการฝังข้อความ

ความแตกต่างระหว่างการค้นหาเวกเตอร์และการค้นหาตามคีย์เวิร์ด

  • การค้นหาเวกเตอร์ ใช้การคำนวณความคล้ายของเวกเตอร์คำ เขายเจอผลลัพธ์ที่มีความคล้ายกันทางความหมายของคำสำร้อง แม้ว่าคำสำร้องและคำในผลลัพธ์จะไม่ตรงตาม การค้นหาเวกเตอร์จะทำการแมปคำเป็นเวกเตอร์ในช่องมิติสูงและคำนวณความคล้ายกันระหว่างเวกเตอร์ นี่หมายความว่าแม้ว่าคำด้วยตัวเองอาจจะไม่ตรงกัน แต่ถ้ามีความคล้ายกันทางความหมายจะสามารถค้นหาผลลัพธ์ที่เกี่ยวข้องได้
  • การค้นหาตามคีย์เวิร์ด ด้วยอีกทางก็คือการจับคู่ตัวอักษร ซึ่งเป็นกระบวนการค้นหาที่เรียบง่าย มันจะส่งผลลัพธ์กลับมาเฉพาะอันที่มีคำสำรวจตรงกัน ถ้าเอกสารใช้คำต่าง ๆ แม้ว่ามันจะมีความหมายคล้ายกัน ก็จะไม่ตรงกัน

คลาส "Embeddings" เป็นชนิดของคลาสที่ออกแบบมาเฉพาะเพื่อรับส่งร่วมกับรุ่นการฝังข้อความ มีผู้ให้บริการรุ่นการฝังข้อความหลายรูปแบบ (เช่น OpenAI, Cohere, Hugging Face, ฯลฯ) และการออกแบบของคลาสนี้คือการให้อินเทอร์เฟสมาตรฐานสำหรับผู้ให้บริการทุกรูปแบบ

คลาส "Embeddings" สร้างเป็นการแทนเวกเตอร์ของข้อความ ด้วยการค้นหาเวกเตอร์สามารถทำการค้นหาเฉพาะด้านความหมายเช่น เราสามารถค้นหาตัวอย่างข้อความที่มีลักษณะคล้ายกันในพื้นที่เวกเตอร์

คลาส "Embeddings" พื้นฐานใน LangChain เปิดเผยสองวิธี: วิธีหนึ่งคือสำหรับการฝังเอกสารและอีกวิธีหนึ่งสำหรับการฝังคำสั่ง การฝังเอกสารนำข้อความหลาย ๆ ชุดเข้าา ในขณะที่วิธีที่อื่นนำข้อความเดียวเข้า

การเริ่มต้นอย่างรวดเร็ว

ด้านล่างนี้คือตัวอย่างการใช้รุ่นการฝังข้อความของ OpenAI:

การกำหนดค่า

ก่อนที่เราจะต้องติดตั้งแพ็คเกจ Python ของ OpenAI ก่อนการใช้งาน โดยที่ LangChain มีการนำเสนอวิธีการใช้ของรุ่นการฝังข้อความหลากหลายรูปแบบ ผู้พัฒนาต้องติดตั้งคุณลักษณะของรุ่นที่ต่างกันตามทางเลือกของตน

pip install langchain-openai

กำหนดค่ากุญแจ OpenAI ผ่านตัวแปรสภาพแวดล้อม:

export OPENAI_API_KEY="..."

ถ้าคุณไม่ต้องการตั้งค่าตัวแปรสภาพแวดล้อม คุณสามารถส่งตัวแปรชื่อ "openai_api_key" โดยตรงเมื่อกำลังเริ่มต้นคลาส LLM ของ OpenAI เพื่อส่งผ่านคีย์ได้เลย

from langchain_openai import OpenAIEmbeddings

embeddings_model = OpenAIEmbeddings(openai_api_key="...")

หรือถ้าไม่มีพารามิเตอร์ใด ๆ คุณสามารถเริ่มต้นโดยไม่ต้องใส่อะไรเลย:

from langchain_openai import OpenAIEmbeddings

embeddings_model = OpenAIEmbeddings()

embed_documents

คำนวณเฟีเจอร์เวกเตอร์ของชุดข้อความ:

embeddings = embeddings_model.embed_documents(
    [
        "สวัสดี!",
        "โอ้ สวัสดี!",
        "ชื่ออะไรของคุณ?",
        "เพื่อนของฉันเรียกฉันว่า เวิลด์",
        "สวัสดี โลก!"
    ]
)
len(embeddings), len(embeddings[0])
(5, 1536)

embed_query

ฟังก์ชันนี้คำนวณเฟีเจอร์เวกเตอร์ของข้อความสอบถาม โดยทั่วไปนั้นมันเกี่ยวกับการแปลงคำถามที่ต้องการสืบค้นเป็นเฟีเจอร์เวกเตอร์ และจากนั้นใช้เวกเตอร์นี้ในการสืบค้นข้อความที่คล้ายกันในฐานข้อมูลเวกเตอร์

embedded_query = embeddings_model.embed_query("ชื่อที่กล่าวถึงในการสนทนาคืออะไร?")
embedded_query[:5]
[0.0053587136790156364,
 -0.0004999046213924885,
 0.038883671164512634,
 -0.003001077566295862,
 -0.00900818221271038]