วิธีทำงานกับแคชใน LangChain

Withi Thangan Kab Khaech Ni Langchain



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

โพสต์นี้จะสาธิตกระบวนการทำงานกับแคชใน LangChain







วิธีทำงานกับแคชใน LangChain

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



หากต้องการเรียนรู้กระบวนการทำงานกับแคชใน LangChain เพียงทำตามขั้นตอนที่ระบุไว้:



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





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

โมดูล FAISS จำเป็นต้องดำเนินการค้นหาความคล้ายคลึงกันในการแยกหรือสร้างเอาต์พุตตามอินพุตที่ผู้ใช้ให้ไว้:



ปิ๊ป ติดตั้ง faiss-gpu

โมดูลสุดท้ายสำหรับคู่มือนี้ที่จำเป็นต้องติดตั้งคือ OpenAI ซึ่งสามารถใช้เพื่อสร้างการฝังข้อมูลโดยใช้เมธอด OpenAIEmbeddings():

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

หลังจากการติดตั้งโมดูลทั้งหมด เพียงตั้งค่าสภาพแวดล้อมโดยใช้คีย์ API จากสภาพแวดล้อม OpenAI โดยใช้คำสั่ง “ คุณ ' และ ' รับผ่าน ” ห้องสมุด:

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

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

ขั้นตอนที่ 2: การนำเข้าไลบรารี
เมื่อการตั้งค่าเสร็จสมบูรณ์ เพียงนำเข้าไลบรารีสำหรับการทำงานกับเทคนิคการแคชใน LangChain:

จาก langchain.storage นำเข้า InMemoryStore
จาก langchain.embeddings นำเข้า CacheBackedEmbeddings
จาก langchain.storage นำเข้า LocalFileStore
จาก langchain.embeddings นำเข้า OpenAIEmbeddings
จาก langchain.document_loaders นำเข้า TextLoader
จาก langchain.embeddings.openai นำเข้า OpenAIEmbeddings
จาก langchain.text_splitter นำเข้า CharacterTextSplitter
จาก langchain.vectorstores นำเข้า FAISS

ขั้นตอนที่ 3: การสร้างโมเดลแคช
หลังจากการนำเข้าไลบรารี เพียงเรียกใช้เมธอด OpenAIEmbeddings() เพื่อสร้างโมเดลและจัดเก็บไว้ในตัวแปร:

underby_embeddings = OpenAIEmbeddings ( )

ตอนนี้ ให้ใช้แคชโดยใช้เมธอด LocalFileStore() และเมธอด CacheBackedEmbeddings() ที่มีอาร์กิวเมนต์หลายตัว:

fs = LocalFileStore ( './แคช/' )

cached_embedder = CacheBackedEmbeddings.from_bytes_store (
underder_embeddings, fs, เนมสเปซ =underlying_embeddings.model
)

เพียงรับรายการการฝัง และตอนนี้รายการจะว่างเปล่าเนื่องจากการฝังไม่ได้ถูกจัดเก็บไว้ในรายการ:

รายการ ( fs.yield_keys ( ) )

ขั้นตอนที่ 4: การสร้างร้านค้าเวกเตอร์
รับไฟล์จากระบบโลคัลโดยใช้ไลบรารีไฟล์และคลิกที่ “ เลือกไฟล์ ” หลังจากรันโค้ด:

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

ตอนนี้ เพียงสร้างร้านค้าเวกเตอร์ที่สามารถใช้เพื่อจัดเก็บการฝังโดยใช้เมธอด TextLoader() พร้อมชื่อของเอกสาร หลังจากนั้นให้ใช้วิธีการแยกข้อความตามขนาดของชิ้นส่วนและแบ่งข้อมูลออกเป็นชิ้นเล็ก ๆ:

raw_documents = TextLoader ( 'state_of_the_union.txt' ) .โหลด ( )
text_splitter = CharacterTextSplitter ( ชิ้น_ขนาด = 1,000 , ชิ้น_ทับซ้อนกัน = 0 )
เอกสาร = text_splitter.split_documents ( raw_documents )

หลังจากแยกข้อความแล้ว ให้เก็บข้อมูลไว้ใน ฐานข้อมูล ตัวแปรโดยใช้ไลบรารี FAISS เพื่อรับเอาต์พุตโดยใช้วิธีค้นหาความคล้ายคลึงกัน:

db = FAISS.from_documents ( เอกสาร cached_embedder )

ตอนนี้ รับรายการการฝังอีกครั้งหลังจากจัดเก็บไว้ในฐานข้อมูล และจำกัดเอาต์พุตให้เหลือเพียง 5 ดัชนีเท่านั้น:

รายการ ( fs.yield_keys ( ) ) [ : : 5 ]

ขั้นตอนที่ 5: การใช้แคชในหน่วยความจำ
การแคชครั้งถัดไปสามารถใช้ได้ผ่านเมธอด InMemoryStore() เพื่อกำหนดตัวแปรร้านค้า:

ร้านค้า = InMemoryStore ( )

สร้างโมเดลการแคชโดยใช้เมธอด OpenAIEmbeddings() และ CacheBackedEmbeddings() โดยมีโมเดล ร้านค้า และเนมสเปซเป็นพารามิเตอร์:

underby_embeddings = OpenAIEmbeddings ( )
embedder = CacheBackedEmbeddings.from_bytes_store (
underder_embeddings, จัดเก็บ, เนมสเปซ =underlying_embeddings.model
)

ใช้การฝังบนเอกสารที่เก็บไว้โดยไม่ต้องใช้การฝังแคชเพื่อรับข้อมูลจากเอกสาร:

การฝัง = embedder.embed_documents ( [ 'สวัสดี' , 'ลาก่อน' ] )

ตอนนี้ ใช้แคชกับการฝังเพื่อดึงข้อมูลจากเอกสารอย่างรวดเร็ว:

embeddings_from_cache = embedder.embed_documents ( [ 'สวัสดี' , 'ลาก่อน' ] )

จัดเก็บการฝังแคชไว้ในตัวแปรการฝัง เพื่อให้ตัวแปรการฝังมีการฝังที่แคชไว้:

การฝัง == embeddings_from_cache

ขั้นตอนที่ 6: การใช้แคชระบบไฟล์
วิธีสุดท้ายในการใช้แคชในการฝังจากเอกสาร test_cache โดยใช้ File System Store:

fs = LocalFileStore ( './test_cache/' )

ใช้การฝังโดยใช้เมธอด CacheBackedEmbeddings() โดยมีโมเดลการฝัง ที่เก็บข้อมูล และเนมสเปซเป็นพารามิเตอร์:

embedder2 = CacheBackedEmbeddings.from_bytes_store (
underder_embeddings, fs, เนมสเปซ =underlying_embeddings.model
)

ใช้ตัวแปร embeddings กับข้อมูลที่แคชไว้เพื่อเรียกเมธอด embedder():

การฝัง = embedder2.embed_documents ( [ 'สวัสดี' , 'ลาก่อน' ] )

ตอนนี้รับการฝังสำหรับสองโลกข้างต้นที่กล่าวถึงเป็นพารามิเตอร์:

รายการ ( fs.yield_keys ( ) )

นั่นคือทั้งหมดที่เกี่ยวกับกระบวนการสร้างและทำงานกับแคชใน LangChain

บทสรุป

หากต้องการทำงานกับเทคนิคการแคชสำหรับการฝังใน LangChain เพียงรับโมดูลที่จำเป็นโดยใช้คำสั่ง pip เช่น FAISS, OpenAI ฯลฯ หลังจากนั้น ให้นำเข้าไลบรารีสำหรับการสร้างและทำงานกับการแคชใน LangChain สามารถฝังสิ่งที่ฝังไว้ในร้านค้าต่างๆ ได้อย่างมีประสิทธิภาพ นักพัฒนาสามารถใช้ร้านค้าหลายแห่งเป็นฐานข้อมูลเพื่อจัดเก็บการฝัง เช่น ร้านค้าเวกเตอร์ ระบบไฟล์ หรือร้านค้าในหน่วยความจำ คู่มือนี้สาธิตกระบวนการทำงานกับแคชใน LangChain