โพสต์นี้จะสาธิตกระบวนการใช้ตัวดึงข้อมูลใน LangChain
วิธีใช้รีทรีฟเวอร์ใน LangChain
รีทรีฟเวอร์ทำหน้าที่เป็นตัวประสานระหว่างแบบจำลองกับมนุษย์ เพื่อให้พวกเขาสามารถใช้มันเพื่อให้ได้ผลลัพธ์ที่ต้องการโดยใช้อินพุตที่ให้มาในภาษาธรรมชาติ ร้านค้าเวกเตอร์ใช้เพื่อจัดเก็บข้อมูลซึ่งสามารถใช้เพื่อรับ/ดึงข้อมูล/ข้อมูลออกมาได้
อย่างไรก็ตาม ตัวดึงข้อมูลมีความทั่วไปมากกว่าฐานข้อมูลเหล่านี้ พวกเขาไม่ได้จัดเก็บข้อมูลใด ๆ และใช้เพื่อรับหรือดึงข้อมูลสำหรับผู้ใช้เท่านั้น หากต้องการเรียนรู้กระบวนการสร้างและใช้งานตัวดึงข้อมูลผ่าน LangChain โปรดดูขั้นตอนต่อไปนี้:
ขั้นตอนที่ 1: ติดตั้งโมดูล
ขั้นแรก ให้ติดตั้งโมดูลที่จำเป็น เช่น LangChain เพื่อให้ไลบรารีและการขึ้นต่อกันเพื่อดำเนินกระบวนการต่อไป:
ปิ๊ป ติดตั้ง แลงเชน
ติดตั้ง chromadb vector store ซึ่งสามารถใช้ในฐานข้อมูลเพื่อให้รีทรีฟเวอร์ดึงข้อมูลจากร้านค้า:
ปิ๊ป ติดตั้ง โครมาดบ์
ตอนนี้ ให้ติดตั้งเฟรมเวิร์ก OpenAI เพื่อรับไลบรารีสำหรับใช้การฝังข้อความก่อนสร้างรีทรีฟเวอร์:
ปิ๊ป ติดตั้ง เปิดใจ
หลังจากติดตั้งโมดูลที่จำเป็นทั้งหมดแล้ว เพียงตั้งค่าสภาพแวดล้อมโดยใช้คีย์ OpenAI API:
นำเข้าเรานำเข้า getpass
ระบบปฏิบัติการ.สภาพแวดล้อม [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'คีย์ OpenAI API:' )
ขั้นตอนที่ 2: อัปโหลดชุดข้อมูล
ตอนนี้รันโค้ดต่อไปนี้เพื่อคลิกที่ “เลือกไฟล์” ปุ่มและอัปโหลดเอกสารหรือไฟล์จากระบบภายในเครื่อง:
อัพโหลด = files.upload ( )
ขั้นตอนที่ 3: นำเข้าไลบรารี
นำเข้าไลบรารีที่จำเป็นเพื่อสร้างและใช้ตัวดึงข้อมูลใน LangChain เช่น “ รายการ , ' โทรกลับ ', และอื่น ๆ อีกมากมาย:
จากการพิมพ์ import Any, List
จากเอกสารนำเข้า langchain.schema
จาก langchain.callbacks.manager นำเข้าการโทรกลับ
ขั้นตอนที่ 4: สร้างการสร้างดัชนีหนึ่งบรรทัด
ขั้นตอนนี้จะสร้างดัชนีสำหรับรีทรีฟเวอร์ที่สามารถใช้เพื่อรับข้อมูลเพื่อสร้างที่เก็บเวกเตอร์โดยการนำเข้าไลบรารีที่จำเป็น:
จาก langchain.llms นำเข้า OpenAI
ที่นี่โหลดข้อมูลโดยใช้ ตัวโหลดข้อความ() วิธีการที่มีเส้นทางของไฟล์ที่อัพโหลดในขั้นตอนที่ 2:
นำเข้า TextLoader จาก langchain.document_loadersตัวโหลด = TextLoader ( 'state_of_the_union.txt' , การเข้ารหัส = 'utf8' )
นำเข้าไลบรารี VectorstoreIndexCreator จาก LangChain เพื่อสร้างดัชนีสำหรับฐานข้อมูล:
นำเข้า VectorstoreIndexCreator จาก langchain.indexesกำหนด ดัชนี ตัวแปรโดยใช้เมธอด VectorstoreIndexCreator() โดยใช้ ตัวโหลด ตัวแปร:
ดัชนี = VectorstoreIndexCreator ( ) .from_loaders ( [ ตัวโหลด ] )ใช้แบบสอบถามเพื่อทดสอบดัชนีโดยการดึงข้อมูลจากเอกสาร:
แบบสอบถาม = “ ประธานาธิบดี Zelenskyy พูดอะไรในคำพูดของเขา”ดัชนีแบบสอบถาม ( แบบสอบถาม )
รับรายละเอียดของดัชนีว่าฐานข้อมูลใดมี ดัชนี โดยใช้รหัสต่อไปนี้:
index.vectorstoreรหัสต่อไปนี้จะอธิบายรายละเอียดทั้งหมดเกี่ยวกับดัชนี ประเภท และฐานข้อมูล:
index.vectorstore.as_retriever ( )
ใช้ดัชนีกับเมธอด query() เพื่อขอสรุปเอกสารโดยใช้อาร์กิวเมนต์แหล่งที่มาเพื่อใช้ชื่อของเอกสาร:
ดัชนีแบบสอบถาม ( “สรุปข้อมูลจากเอกสารนี้” , รีทรีฟเวอร์_ควาร์กส์ = { 'search_kwargs' : : { 'กรอง' : : { 'แหล่งที่มา' : : 'state_of_the_union.txt' } } } )
ขั้นตอนที่ 5: สร้างการฝัง
โหลดเอกสารสำหรับสร้างการฝังและจัดเก็บข้อความในรูปแบบตัวเลขโดยใช้ที่เก็บเวกเตอร์:
เริ่มขั้นตอนการฝังโดยใช้ text_splitter ด้วยขนาดชิ้นและอาร์กิวเมนต์ที่ทับซ้อนกัน:
จาก langchain.text_splitter นำเข้า CharacterTextSplitter#using text_splitter เพื่อสร้างเอกสารชิ้นเล็กๆ เพื่อใช้รีทรีฟเวอร์
text_splitter = CharacterTextSplitter ( ชิ้น_ขนาด = 1,000 , ชิ้น_ทับซ้อนกัน = 0 )
ข้อความ = text_splitter.split_documents ( เอกสาร )
ใช้วิธีการ OpenAIEmbeddings() ที่สามารถนำเข้าจาก LangChain:
จาก langchain.embeddings นำเข้า OpenAIEmbeddingsการฝัง = OpenAIEembeddings ( )
ใช้ร้านค้า chromadb เพื่อจัดเก็บการฝังที่สร้างจากเอกสาร:
จาก langchain.vectorstores นำเข้า Chromadb = Chroma.from_documents ( ข้อความการฝัง )
ขั้นตอนที่ 6: ทดสอบรีทรีฟเวอร์
เมื่อสร้างและจัดเก็บไว้ในฐานข้อมูลแล้ว ให้กำหนดตัวแปรรีทรีฟเวอร์:
เรียกเชนโดยใช้เมธอด RetreatalQA() พร้อมด้วยฟังก์ชัน OpenAI() และตัวดึงข้อมูลเป็นอาร์กิวเมนต์:
qa = การดึงข้อมูลQA.from_chain_type ( llm =โอเพ่นเอไอ ( ) , chain_type = 'สิ่งของ' , รีทรีฟเวอร์ = รีทรีฟเวอร์ )ป้อนข้อมูลเพื่อทดสอบรีทรีฟเวอร์โดยใช้ แบบสอบถาม ตัวแปรภายในเมธอด qa.run():
แบบสอบถาม = “ ประธานาธิบดี Zelenskyy พูดอะไรในคำพูดของเขา”qa.วิ่ง ( แบบสอบถาม )
เพียงปรับแต่ง VectorstoreIndexCreator () ใช้อาร์กิวเมนต์เพื่อตั้งค่าต่างๆ:
index_creator = VectorstoreIndexCreator (vectorstore_cls =โครมา,
การฝัง =การฝัง OpenAIE ( ) ,
text_splitter =CharacterTextSplitter ( ชิ้น_ขนาด = 1,000 , ชิ้น_ทับซ้อนกัน = 0 )
)
นั่นคือทั้งหมดที่เกี่ยวกับกระบวนการเริ่มต้นใช้งานตัวดึงข้อมูลใน LangChain
บทสรุป
หากต้องการใช้ตัวดึงข้อมูลใน LangChain เพียงติดตั้งการขึ้นต่อกันที่จำเป็นในการตั้งค่าสภาพแวดล้อม OpenAI จากนั้นอัปโหลดเอกสารเพื่อทดสอบตัวดึงข้อมูล หลังจากนั้น ให้สร้างรีทรีฟเวอร์โดยใช้คลาสฐานนามธรรมหรือไลบรารี ABC จากนั้นสร้างดัชนีสำหรับฐานข้อมูลเพื่อดึงข้อมูล กำหนดค่าการฝังสำหรับเอกสารและเรียกใช้รีทรีฟเวอร์เพื่อให้ได้ผลลัพธ์ที่เปรียบเทียบได้จากฐานข้อมูล โพสต์นี้ได้อธิบายรายละเอียดเกี่ยวกับกระบวนการใช้ตัวดึงข้อมูลใน LangChain