Bu kılavuz, LangChain çerçevesini kullanarak VectorStoreRetrieverMemory'nin nasıl kullanılacağını gösterecektir.
LangChain'de VectorStoreRetrieverMemory Nasıl Kullanılır?
VectorStoreRetrieverMemory, vektör depolarını kullanarak bellekten bilgi/veri çıkarmak için kullanılabilen LangChain kütüphanesidir. Bilgi istemine veya sorguya göre verimli bir şekilde çıkarmak amacıyla verileri depolamak ve yönetmek için vektör depoları kullanılabilir.
LangChain'de VectorStoreRetrieverMemory kullanma sürecini öğrenmek için aşağıdaki kılavuzu incelemeniz yeterlidir:
Adım 1: Modülleri Kurun
Pip komutunu kullanarak LangChain'i yükleyerek bellek alıcıyı kullanma işlemini başlatın:
pip kurulumu langchain
Anlamsal benzerlik aramasını kullanarak verileri elde etmek için FAISS modüllerini yükleyin:
pip kurulumu faiss-gpu
Chroma veritabanını kullanmak için chromadb modülünü yükleyin. Alıcının hafızasını oluşturmak için vektör deposu olarak çalışır:
pip install chromadb
Verileri daha küçük parçalara dönüştürerek token oluşturmak için kullanılabilecek başka bir tiktoken modülünün kurulması gerekir:
pip tiktoken kurulumu
Ortamını kullanarak yüksek lisans veya sohbet robotları oluşturmak amacıyla kütüphanelerini kullanmak için OpenAI modülünü yükleyin:
pip kurulumu openai
Ortamı ayarlayın OpenAI hesabındaki API anahtarını kullanarak Python IDE'de veya dizüstü bilgisayarda:
içe aktarmak Seniçe aktarmak geçiş izni
Sen . yaklaşık olarak [ 'OPENAI_API_KEY' ] = geçiş izni . geçiş izni ( 'OpenAI API Anahtarı:' )
2. Adım: Kitaplıkları İçe Aktarın
Bir sonraki adım, LangChain'deki hafıza alıcısını kullanmak için bu modüllerden kütüphaneleri almaktır:
itibaren Langchain. istemler içe aktarmak İstem Şablonuitibaren tarihsaat içe aktarmak tarihsaat
itibaren Langchain. lms içe aktarmak OpenAI
itibaren Langchain. gömmeler . açık içe aktarmak OpenAIE Yerleştirmeleri
itibaren Langchain. zincirler içe aktarmak Konuşma Zinciri
itibaren Langchain. hafıza içe aktarmak VectorStoreRetrieverBellek
3. Adım: Vektör Mağazasını Başlatma
Bu kılavuz, FAISS kitaplığını içe aktardıktan sonra giriş komutunu kullanarak verileri çıkarmak için Chroma veritabanını kullanır:
içe aktarmak faisitibaren Langchain. doküman mağazası içe aktarmak InMemoryDocstore
#veritabanlarını veya vektör depolarını yapılandırmak için kitaplıkları içe aktarma
itibaren Langchain. vektör mağazaları içe aktarmak FAISS
#vektör mağazalarında saklamak için yerleştirmeler ve metinler oluşturun
yerleştirme_boyutu = 1536
dizin = fais. DizinDüzL2 ( yerleştirme_boyutu )
yerleştirme_fn = OpenAIE Yerleştirmeleri ( ) . embed_query
vektör mağazası = FAISS ( yerleştirme_fn , dizin , InMemoryDocstore ( { } ) , { } )
Adım 4: Bir Vektör Mağazası Tarafından Desteklenen Retriever Oluşturma
Konuşmadaki en son mesajları depolamak ve sohbetin içeriğini öğrenmek için hafızayı oluşturun:
av köpeği = vektör mağazası. as_retriever ( search_kwargs = dikte etmek ( k = 1 ) )hafıza = VectorStoreRetrieverBellek ( av köpeği = av köpeği )
hafıza. save_context ( { 'giriş' : 'Pizza yemeyi severim' } , { 'çıktı' : 'fantastik' } )
hafıza. save_context ( { 'giriş' : 'Futbolda iyiyim' } , { 'çıktı' : 'Tamam' } )
hafıza. save_context ( { 'giriş' : 'Siyasetten hoşlanmıyorum' } , { 'çıktı' : 'Elbette' } )
Kullanıcının geçmişiyle birlikte sağladığı girişi kullanarak modelin hafızasını test edin:
Yazdır ( hafıza. load_memory_variables ( { 'çabuk' : 'Hangi sporu izlemeliyim?' } ) [ 'tarih' ] )
Adım 5: Retriever'ı Zincirde Kullanmak
Bir sonraki adım, OpenAI() yöntemini kullanarak LLM'yi oluşturarak ve bilgi istemi şablonunu yapılandırarak zincirlerle bir bellek alıcının kullanılmasıdır:
llm = OpenAI ( sıcaklık = 0 )_VARSAYILAN ŞABLON = '''Bir insan ile bir makine arasındaki etkileşimdir
Sistem bağlamı kullanarak ayrıntılarla birlikte yararlı bilgiler üretir
Sistem sizin için bir yanıta sahip değilse, yalnızca yanıtın bende olmadığını söyler
Konuşmadan önemli bilgiler:
{tarih}
(metin konuyla ilgili değilse kullanmayın)
Mevcut sohbet:
İnsan: {giriş}
AI:'''
ÇABUK = İstem Şablonu (
girdi_değişkenleri = [ 'tarih' , 'giriş' ] , şablon = _VARSAYILAN ŞABLON
)
#ConversationChain()'i parametrelerinin değerlerini kullanarak yapılandırın
konuşma_with_summary = Konuşma Zinciri (
llm = llm ,
çabuk = ÇABUK ,
hafıza = hafıza ,
ayrıntılı = Doğru
)
konuşma_ile_özetle. tahmin etmek ( giriş = 'Merhaba, benim adım Perry, naber?' )
Çıktı
Komutun yürütülmesi zinciri çalıştırır ve model veya LLM tarafından sağlanan yanıtı görüntüler:
Vektör deposunda depolanan verileri temel alan istemi kullanarak konuşmaya devam edin:
konuşma_ile_özetle. tahmin etmek ( giriş = 'en sevdiğim spor hangisi?' )
Önceki mesajlar, modelin mesajın içeriğini anlamak için kullanabileceği modelin belleğinde saklanır:
konuşma_ile_özetle. tahmin etmek ( giriş = 'En sevdiğim yemek nedir' )
Bellek alıcının sohbet modeliyle nasıl çalıştığını kontrol etmek için önceki mesajlardan birinde modele verilen yanıtı alın:
konuşma_ile_özetle. tahmin etmek ( giriş = 'Benim adım ne?' )Model, bellekte saklanan verilerden benzerlik aramasını kullanarak çıktıyı doğru bir şekilde görüntüledi:
Hepsi LangChain'deki vektör deposu alıcısını kullanmakla ilgili.
Çözüm
LangChain'deki bir vektör deposunu temel alan bellek alıcısını kullanmak için modülleri ve çerçeveleri kurmanız ve ortamı ayarlamanız yeterlidir. Bundan sonra, Chroma kullanarak veritabanını oluşturmak için modüllerden kitaplıkları içe aktarın ve ardından bilgi istemi şablonunu ayarlayın. Verileri hafızaya kaydettikten sonra konuşmayı başlatıp önceki mesajlarla ilgili sorular sorarak alıcıyı test edin. Bu kılavuzda LangChain'de VectorStoreRetrieverMemory kütüphanesinin kullanım süreci ayrıntılı olarak açıklanmıştır.