Bu gönderi, LangChain'de ana belge alıcısını kullanma sürecini gösterecektir.
LangChain'de Ana Belge Alıcısı Nasıl Kullanılır?
LangChain'deki ana belge alıcısı, belgeleri daha küçük parçalara bölerek kullanılabilir, böylece yerleştirme anlarında anlamlarını kaybetmezler. Ana belgenin, belgenin tamamı veya daha küçük parçaların çıkarıldığı daha büyük parça olduğu söylenebilir.
LangChain'de ana belge alıcıyı kullanma sürecini öğrenmek için bu kılavuza göz atmanız yeterlidir:
Adım 1: Modülleri Kurun
Öncelikle pip komutunu kullanarak LangChain çerçevesini yükleyerek ana belge alıcısını kullanmaya başlayın:
pip kurulumu langchain
Belgenin yerleştirmelerini kaydetmek ve belgeden veri almak için Chroma veritabanı modülünü yükleyin:
pip install chromadb
Küçük parçalar oluşturarak belgenin jetonlarını alan bir tokenizer olan tiktoken'i yüklemek için:
pip tiktoken kurulumu
Bağımlılıklarını ve kitaplıklarını almak için Python not defterinde aşağıdaki komutu yürüterek OpenAI modülünü edinin:
pip kurulumu openai
Adım 2: Ortamın Kurulumu ve Verilerin Yüklenmesi
Bir sonraki adım ise ortamı kurmak OpenAI hesabındaki API anahtarını kullanarak:
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ı:' )
Şimdi, dosya kitaplığını içe aktardıktan sonra belgeleri yerel sistemden yükleyin ve ardından upload() yöntemini çağırın:
itibaren google. ve diğerleri içe aktarmak Dosyalaryüklendi = Dosyalar. yüklemek ( )
3. Adım: Kitaplıkları İçe Aktarın
Bir sonraki adım, LangChain çerçevesini kullanarak ana belge alıcılarını kullanmak için gerekli kitaplıkları içe aktarma kodunu içerir:
itibaren Langchain. avcılar içe aktarmak EbeveynDocumentRetrieveritibaren Langchain. vektör mağazaları içe aktarmak Renk
itibaren Langchain. gömmeler içe aktarmak OpenAIE Yerleştirmeleri
itibaren Langchain. metin_splitter içe aktarmak ÖzyinelemeliKarakterMetin Bölücü
itibaren Langchain. depolamak içe aktarmak InMemoryStore
itibaren Langchain. document_loaders içe aktarmak Metin Yükleyici
Dosya yolunu içeren TextLoader() yöntemlerini kullanarak alıcıyı oluşturmak için belgeyi yükleyin:
yükleyiciler = [Metin Yükleyici ( 'Veri.txt' ) ,
Metin Yükleyici ( 'birliğin_durumu.txt' ) ,
]
dokümanlar = [ ]
için ben içinde yükleyiciler:
Adım 4: Tam Belgeleri Alma
Belgeler/dosyalar modele yüklendikten sonra, belgelerin yerleştirmelerini oluşturmanız ve bunları vektör depolarında saklamanız yeterlidir:
çocuk_splitter = ÖzyinelemeliKarakterMetin Bölücü ( Parça boyutu = 400 )vektör mağazası = Renk (
koleksiyon_adı = 'tam_belgeler' ,
gömme_işlevi = OpenAIE Yerleştirmeleri ( )
)
mağaza = InMemoryStore ( )
av köpeği = EbeveynDocumentRetriever (
vektör mağazası = vektör mağazası ,
doküman deposu = mağaza ,
çocuk_splitter = çocuk_splitter ,
)
Şimdi, alıcıyı belgelere ulaştırmak için alıcıyı kullanarak add_documents() yöntemini çağırın:
av köpeği. add_documents ( dokümanlar , kimlikler = Hiçbiri )Aşağıdaki kod, yüklenen dosyalar için veritabanında saklanan belgelerin yerleştirmelerini çıkarır:
liste ( mağaza. verim_anahtarları ( ) )
Belgelerin yerleştirmelerini aldıktan sonra, belgeden küçük parçaları almak için sorguyla benzerlik_search() yöntemini çağırın:
alt_docs = vektör mağazası. benzerlik_araması ( 'Adalet Breyer' )Sorguya dayalı olarak önceki kodda çağrılan parçaları görüntülemek için print() yöntemini çağırın:
Yazdır ( alt_docs [ 0 ] . sayfa içeriği )
Aşağıdaki kodu kullanarak veritabanında depolanan tüm belirteçleri almak için Complete the Retriever() işlevini çağırın:
alınan_docs = av köpeği. get_relevant_documents ( 'Adalet Breyer' )Tüm belgelerin yazdırılması çok fazla zaman ve işlem gücü gerektireceğinden, önceden alınan belgelerin uzunluğunu almanız yeterlidir:
sadece ( alınan_docs [ 0 ] . sayfa içeriği )
Adım 5: Daha Büyük Parçaların Alınması
Bu adım belgenin tamamını kapsamayacaktır; ancak belgeden daha büyük bir sincap alır ve ondan daha küçük bir parça alır:
ebeveyn_splitter = ÖzyinelemeliKarakterMetin Bölücü ( Parça boyutu = 2000 )çocuk_splitter = ÖzyinelemeliKarakterMetin Bölücü ( Parça boyutu = 400 )
vektör mağazası = Renk ( koleksiyon_adı = 'bölünmüş_ebeveynler' , gömme_işlevi = OpenAIE Yerleştirmeleri ( ) )
mağaza = InMemoryStore ( )
Alıcıyı, '' alanında depolanan devasa veri havuzundan daha küçük jetonu alacak şekilde yapılandırın. vektör mağazası ” değişken:
av köpeği = EbeveynDocumentRetriever (vektör mağazası = vektör mağazası ,
doküman deposu = mağaza ,
çocuk_splitter = çocuk_splitter ,
ebeveyn_splitter = ebeveyn_splitter ,
)
Vektör mağazalarından daha büyük parçaları almak için alıcıyı arayın. dokümanlar fonksiyonun argümanındaki değişken:
av köpeği. add_documents ( dokümanlar )Bu belgelerin uzunluğunu şu adresten öğrenin: dokümanlar aşağıdaki komutla değişken:
sadece ( liste ( mağaza. verim_anahtarları ( ) ) )
Önceki ekran görüntüsü vektör deposunda 23 belgenin saklandığını gösterdiğinden, daha büyük bir parçadan daha küçük bir parça almanız yeterlidir. Sorgu, ilgili verileri elde etmek için kullanılır. benzerlik_arama() vektör deposundan veri alma yöntemi:
alt_docs = vektör mağazası. benzerlik_araması ( 'Adalet Breyer' )Ekranda görüntülemek için önceki kodda belirtilen sorguyu kullanarak daha küçük parçaları yazdırın:
Yazdır ( alt_docs [ 0 ] . sayfa içeriği )
Şimdi, işlevin argümanı olarak sorguyu kullanarak veritabanında depolanan tüm veri kümesinde alıcıyı kullanın:
alınan_docs = av köpeği. get_relevant_documents ( 'Adalet Breyer' )Veritabanında oluşturulan ve saklanan tüm parçaların uzunluğunu alın:
sadece ( alınan_docs [ 0 ] . sayfa içeriği )
Tüm parçaları görüntüleyemiyoruz ancak indeks numarası 0 olan ilk parça aşağıdaki kod kullanılarak görüntülenir:
Yazdır ( alınan_docs [ 0 ] . sayfa içeriği
LangChain'de ana belge alıcısını kullanma süreci bu kadar.
Çözüm
LangChain'de ana belge alıcıyı kullanmak için modülleri kurmanız ve API anahtarını kullanarak OpenAI ortamını kurmanız yeterlidir. Bundan sonra, ana belge alıcıyı kullanmak için gerekli kitaplıkları LangChain'den içe aktarın ve ardından model için belgeleri yükleyin. Kullanıcı ana belgeleri belgenin tamamı veya büyük kısmı olarak kullanabilir ve sorguyu kullanarak daha küçük bir parça elde edebilir. Bu gönderide LangChain'de ana belge alıcının kullanılması süreci ayrıntılı olarak açıklanmıştır.