Multiple Documents QnA
Birden fazla belgeyi doğru şekilde nasıl sorgulayacağınızı öğrenin
Son Web Scrape QnA örneğinde yalnızca 1 web sitesini ekleyip sorguluyoruz. Peki ya birden fazla web sitemiz ya da birden fazla belgemiz varsa? Bir göz atalım ve bunu nasıl başarabileceğimizi görelim.
Bu örnekte, APPLE ve TESLA'nın FORM-10K'sı olan 2 PDF üzerinde QnA gerçekleştireceğiz.


Upsert
Marketplace templates'lerinden - Conversational Retrieval QA Chain adlı örnek akışı bulun.
PDF File Loader'ı kullanacağız ve ilgili dosyaları yükleyeceğiz:

3. PDF Dosya Yükleyicinin Additional Parameters (Ek Parametreler) öğesine tıklayın ve metadata nesnesini belirtin. Örneğin, Apple FORM-10K yüklenmiş PDF Dosyası {source: apple} metadata nesnesine sahip olabilirken, Tesla FORM-10K yüklenmiş PDF Dosyası {source: tesla} nesnesine sahip olabilir. Bu, geri alma sırasında belgeleri ayırmak için yapılır.


Pinecone için kimlik bilgilerini doldurduktan sonra Upsert'e tıklayın:

Pinecone konsolunda eklenen yeni vektörleri görebileceksiniz.

Query
Verilerin Pinecone'a eklendiğini doğruladıktan sonra, artık sohbette soru sormaya başlayabiliriz!

Ancak, yanıtı döndürmek için kullanılan alınan bağlam hem APPLE hem de TESLA belgelerinin bir karışımıdır. Source Documents'dan da görebileceğiniz gibi:


Pinecone düğümünden bir metadata filtresi belirleyerek bunu düzeltebiliriz. Örneğin, yalnızca APPLE FORM-10K'dan içerik almak istiyorsak, Upsert adımında daha önce belirlediğimiz metadataya bakabilir, ardından aynısını aşağıdaki Metadata Filter'da kullanabiliriz:

Aynı soruyu tekrar soralım, şimdi alınan tüm içeriğin gerçekten APPLE FORM-10K'dan olduğunu görmeliyiz:

Ancak bununla ilgili sorun, metadata filtrelemenin bir tür “sabit kodlu” olmasıdır. İdeal olarak, LLM'nin soruya dayalı olarak hangi belgeyi alacağına karar vermesine izin vermeliyiz.
Tool Agent
Tool Agent kullanarak "hard-coded" metadata filtresi sorununu çözebiliriz.
Temsilciye toollar sağlayarak, soruya bağlı olarak hangi toolun kullanılmasının uygun olacağına karar vermesini sağlayabiliriz.
Aşağıdaki ad ve açıklama ile bir Retriever Tool oluşturun:
search_apple
Apple Inc (APPL) hakkındaki kullanıcı sorularını yanıtlamak için bu işlevi kullanın. Apple Inc'in (APPL) 2022 dönemine ait finansallarını açıklayan bir SEC Form 10K dosyası içerir.
Metadata filtresi
{source: apple}ile Pinecone düğümüne bağlanın

Aynısını Tesla için de tekrarlayın:
search_tsla
Tesla Inc (TSLA) hakkındaki kullanıcı sorularını yanıtlamak için bu işlevi kullanın. Tesla Inc'in (TSLA) 2022 dönemi için finansallarını açıklayan bir SEC Form 10K dosyası içerir.
{source: tesla}
Flow'unuz aşağıdaki gibi görünmelidir:

Şimdi, Tool Agent için genel bir talimat oluşturmamız gerekiyor. Düğümün Additional Parameters (Ek Parametreler) öğesine tıklayın ve System Message (Sistem Mesajı) öğesini belirtin. Örneğin:
Chatflow'u kaydedin ve soru sormaya başlayın!



Tesla ile takip edin:

Artık tools + agent kullanarak metadata filtrelemesini “ hard-coding ” yapmadan daha önce vektör veritabanına eklediğimiz herhangi bir belge hakkında soru sorabiliyoruz.
XML Agent'i
Bazı LLM'ler için fonksiyon çağırma özellikleri desteklenmez. Bu durumda, sağlanan araçları kullanmak amacıyla LLM'yi daha yapılandırılmış bir formatta/syntaxta sorgulamak için XML Agent'ı kullanabiliriz.
Temel komut prompt'una sahiptir:

Sonuç
Conversational Retrieval QA Chain kullanımını ve birden fazla belgeyi sorgularken sınırlamasını ele aldık. Ve OpenAI Function Agent/XML Agent + Tools kullanarak sorunun üstesinden gelmeyi başardık. Şablonları aşağıda bulabilirsiniz:
JSON DOSYALARI LİNKİ!!
Last updated