LangChain'de Retriever'lar Nasıl Kullanılır?

Langchain De Retriever Lar Nasil Kullanilir



LangChain, geliştiricilerin insanlarla etkileşimde bulunmak için kullanılabilecek Büyük Dil Modelleri (LLM'ler) oluşturmasına olanak tanıyan çerçevedir. Bu modelleri oluşturmak için gerekli tüm kütüphaneleri ve bağımlılıkları sağladığından, makinelerin LangChain'i kullanarak onlarla etkileşime girebilmek için insan dillerini öğrenmesi gerekir.

Bu gönderi LangChain'de alıcıların kullanım sürecini gösterecektir.

LangChain'de Retriever'lar Nasıl Kullanılır?

Alıcılar, doğal dillerde sağlanan girdiyi kullanarak istenen çıktıyı elde etmek için modeller ve insanlar arasında bir arayüz görevi görür. Vektör depoları, bilgi/veri almak/çıkarmak için kullanılabilecek verileri depolamak için kullanılır.







Ancak alıcılar bu veritabanlarından daha geneldir. Herhangi bir veri saklamazlar ve yalnızca kullanıcılar için veri almak veya almak için kullanılırlar. LangChain aracılığıyla alıcıları oluşturma ve kullanma sürecini öğrenmek için aşağıdaki adımlara bakın:



Adım 1: Modülleri Kurun
Öncelikle, kütüphanelerin ve bağımlılıkların sürece devam etmesini sağlamak için LangChain gibi gerekli modülleri yükleyin:



pip düzenlemek uzun zincir





Alıcının mağazadan veri alması için veri tabanı oluşturmak amacıyla kullanılabilecek chromadb vektör deposunu yükleyin:

pip düzenlemek kromadb



Şimdi, bir alıcı oluşturmadan önce metin yerleştirmeyi kullanmak için kütüphanelerini almak üzere OpenAI çerçevesini yükleyin:

pip düzenlemek açık

Gerekli tüm modülleri yükledikten sonra OpenAI API anahtarını kullanarak ortamı ayarlamanız yeterlidir:

bizi ithal et
getpass'ı içe aktar

işletim sistemi ortamı [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'OpenAI API Anahtarı:' )

2. Adım: Veri Kümesini Yükleyin
Şimdi aşağıdaki kodu çalıştırıp tıklıyoruz. “Dosyaları Seç” düğmesine basın ve belgeyi veya dosyayı yerel sistemden yükleyin:

google.colab içe aktarma dosyalarından
yüklenen = dosyalar.upload ( )

3. Adım: Kitaplıkları İçe Aktarın
LangChain'de alıcıları oluşturmak ve kullanmak için gerekli kitaplıkları içe aktarın; örneğin: Liste ', ' Geri aramalar ', ve daha fazlası:

abc'den ABC'yi içe aktar, abstractmethod
Herhangi birini içe aktar, Listele yazarak
langchain.schema'dan içe aktarma Belgesi
langchain.callbacks.manager'dan Geri Aramaları içe aktarın

Adım 4: Tek Satır Dizin Oluşturma Oluşturun
Bu adım, gerekli kitaplıkları içe aktararak vektör deposunu oluşturacak verileri almak için kullanılabilecek alıcıya yönelik dizini oluşturur:

langchain.chains'ten RetrievalQA'yı içe aktarın
langchain.llms'den OpenAI'yi içe aktarın

Burada verileri kullanarak yükleyin. Metin Yükleyici() 2. adımda yüklenen dosyanın yolunu içeren yöntem:

TextLoader'ı langchain.document_loaders'tan içe aktar
yükleyici = TextLoader ( 'birliğin_durumu.txt' , kodlama = 'utf8' )

Kitaplığı içe aktar VectorstoreIndexCreator veritabanı için bir dizin oluşturmak üzere LangChain'den:

VectorstoreIndexCreator'ı langchain.indexes'ten içe aktarın

Tanımla dizin VectorstoreIndexCreator() yöntemini kullanarak değişken yükleyici değişken:

indeks = VectorstoreIndexCreator ( ) .from_loaders ( [ yükleyici ] )

Belgeden veri alarak dizini test etmek için sorguyu uygulayın:

sorgu = 'Başkan Zelenskiy konuşmasında ne dedi'
indeks.sorgu ( sorgu )

Hangi veritabanının sahip olduğuna ilişkin endeksin ayrıntılarını alın dizin aşağıdaki kodu kullanarak:

indeks.vektör mağazası

Aşağıdaki kod, dizin, türü ve veritabanı hakkındaki tüm ayrıntıları açıklayacaktır:

index.vectorstore.as_retriever ( )

Belgenin adını kullanmak için kaynak bağımsız değişkenini kullanarak belgenin özetini isteyen query() yöntemini içeren dizini kullanın:

indeks.sorgu ( 'Bu belgedeki verilerin genel özeti' , Retriever_kwargs = { 'arama_kwargs' : { 'filtre' : { 'kaynak' : 'birliğin_durumu.txt' } } } )

Adım 5: Yerleştirmeler Oluşturun
Gömmeyi oluşturmak için belgeyi yükleyin ve vektör deposunu kullanarak metni sayısal biçimde saklayın:

belgeler = loader.load ( )

kullanarak yerleştirme işlemini başlatın. metin_splitter parça boyutu ve örtüşme argümanlarıyla:

langchain.text_splitter'dan CharacterTextSplitter'ı içe aktarın
#alıcıyı kullanmak üzere belgenin küçük parçalarını oluşturmak için text_splitter'ı kullanma
text_splitter = KarakterTextSplitter ( Parça boyutu = 1000 , chunk_overlap = 0 )
metinler = text_splitter.split_documents ( belgeler )

LangChain'den içe aktarılabilen OpenAIEmbeddings() yöntemini uygulayın:

langchain.embeddings'ten OpenAIEmbeddings'i içe aktarın
yerleştirmeler = OpenAIE yerleştirmeleri ( )

Belgeden oluşturulan yerleştirmeleri depolamak için chromadb deposunu kullanın:

langchain.vectorstores'tan Chroma'yı içe aktarın
db = Chroma.from_documents ( metinler, yerleştirmeler )

Adım 6: Alıcıyı Test Edin
Gömmeler oluşturulup veritabanında saklandıktan sonra, geri getirici değişkenini tanımlamanız yeterlidir:

alıcı = db.as_retriever ( )

OpenAI() işlevi ve argümanları olarak alıcı ile RetrievalQA() yöntemini kullanarak zincirleri çağırın:

qa = RetrievalQA.from_chain_type ( llm =AçıkAI ( ) , zincir_tipi = 'şey' , av köpeği =alıcı )

Alıcıyı test etmek için girişi sağlayın. sorgu qa.run() yönteminin içindeki değişken:

sorgu = 'Başkan Zelenskiy konuşmasında ne dedi?'
qa.run ( sorgu )

Basitçe özelleştirin VectorstoreIndexCreator () farklı değerleri ayarlamak için bağımsız değişkenlerini kullanma:

index_creator = VectorstoreIndexCreator (
vektörstore_cls =Kroma,
gömme =AIE yerleştirmelerini aç ( ) ,
metin_splitter =KarakterMetni Bölücü ( Parça boyutu = 1000 , chunk_overlap = 0 )
)

LangChain'de avcılara başlama süreciyle ilgili her şey bu.

Çözüm

LangChain'de alıcıları kullanmak için, OpenAI ortamını kurmak için gereken bağımlılıkları kurmanız ve ardından alıcıları test etmek için belgeyi yüklemeniz yeterlidir. Bundan sonra, soyut bir temel sınıf veya ABC kitaplığı kullanarak alıcıyı oluşturun ve ardından verileri almak için veritabanının dizinini oluşturun. Belgeye yönelik eklemeleri yapılandırın ve veri tabanından karşılaştırılabilir sonuçlar almak için alıcıyı çalıştırın. Bu gönderi, LangChain'deki alıcıları kullanma sürecini detaylandırdı.