วิธีใช้รีทรีฟเวอร์ใน LangChain

Withi Chi Ri Thrif Wexr Ni Langchain



LangChain เป็นเฟรมเวิร์กที่ช่วยให้นักพัฒนาสามารถสร้าง Large Language Models (LLM) ที่สามารถใช้ในการโต้ตอบกับมนุษย์ได้ แมชชีนจำเป็นต้องเรียนรู้ภาษามนุษย์เพื่อโต้ตอบกับพวกเขาโดยใช้ LangChain เนื่องจากมีไลบรารีและการพึ่งพาที่จำเป็นทั้งหมดในการสร้างโมเดลเหล่านี้

โพสต์นี้จะสาธิตกระบวนการใช้ตัวดึงข้อมูลใน LangChain

วิธีใช้รีทรีฟเวอร์ใน LangChain

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







อย่างไรก็ตาม ตัวดึงข้อมูลมีความทั่วไปมากกว่าฐานข้อมูลเหล่านี้ พวกเขาไม่ได้จัดเก็บข้อมูลใด ๆ และใช้เพื่อรับหรือดึงข้อมูลสำหรับผู้ใช้เท่านั้น หากต้องการเรียนรู้กระบวนการสร้างและใช้งานตัวดึงข้อมูลผ่าน LangChain โปรดดูขั้นตอนต่อไปนี้:



ขั้นตอนที่ 1: ติดตั้งโมดูล
ขั้นแรก ให้ติดตั้งโมดูลที่จำเป็น เช่น LangChain เพื่อให้ไลบรารีและการขึ้นต่อกันเพื่อดำเนินกระบวนการต่อไป:



ปิ๊ป ติดตั้ง แลงเชน





ติดตั้ง chromadb vector store ซึ่งสามารถใช้ในฐานข้อมูลเพื่อให้รีทรีฟเวอร์ดึงข้อมูลจากร้านค้า:

ปิ๊ป ติดตั้ง โครมาดบ์



ตอนนี้ ให้ติดตั้งเฟรมเวิร์ก OpenAI เพื่อรับไลบรารีสำหรับใช้การฝังข้อความก่อนสร้างรีทรีฟเวอร์:

ปิ๊ป ติดตั้ง เปิดใจ

หลังจากติดตั้งโมดูลที่จำเป็นทั้งหมดแล้ว เพียงตั้งค่าสภาพแวดล้อมโดยใช้คีย์ OpenAI API:

นำเข้าเรา
นำเข้า getpass

ระบบปฏิบัติการ.สภาพแวดล้อม [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'คีย์ OpenAI API:' )

ขั้นตอนที่ 2: อัปโหลดชุดข้อมูล
ตอนนี้รันโค้ดต่อไปนี้เพื่อคลิกที่ “เลือกไฟล์” ปุ่มและอัปโหลดเอกสารหรือไฟล์จากระบบภายในเครื่อง:

จากไฟล์นำเข้า google.colab
อัพโหลด = files.upload ( )

ขั้นตอนที่ 3: นำเข้าไลบรารี
นำเข้าไลบรารีที่จำเป็นเพื่อสร้างและใช้ตัวดึงข้อมูลใน LangChain เช่น “ รายการ , ' โทรกลับ ', และอื่น ๆ อีกมากมาย:

จาก abc นำเข้า ABC วิธีนามธรรม
จากการพิมพ์ import Any, List
จากเอกสารนำเข้า langchain.schema
จาก langchain.callbacks.manager นำเข้าการโทรกลับ

ขั้นตอนที่ 4: สร้างการสร้างดัชนีหนึ่งบรรทัด
ขั้นตอนนี้จะสร้างดัชนีสำหรับรีทรีฟเวอร์ที่สามารถใช้เพื่อรับข้อมูลเพื่อสร้างที่เก็บเวกเตอร์โดยการนำเข้าไลบรารีที่จำเป็น:

จาก langchain.chains นำเข้า RetreatalQA
จาก 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: สร้างการฝัง
โหลดเอกสารสำหรับสร้างการฝังและจัดเก็บข้อความในรูปแบบตัวเลขโดยใช้ที่เก็บเวกเตอร์:

เอกสาร = loader.load ( )

เริ่มขั้นตอนการฝังโดยใช้ 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 นำเข้า Chroma
db = Chroma.from_documents ( ข้อความการฝัง )

ขั้นตอนที่ 6: ทดสอบรีทรีฟเวอร์
เมื่อสร้างและจัดเก็บไว้ในฐานข้อมูลแล้ว ให้กำหนดตัวแปรรีทรีฟเวอร์:

รีทรีฟเวอร์ = db.as_retriever ( )

เรียกเชนโดยใช้เมธอด 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