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

  1. Marketplace templates'lerinden - Conversational Retrieval QA Chain adlı örnek akışı bulun.

  2. 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.

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

  1. Pinecone konsolunda eklenen yeni vektörleri görebileceksiniz.

Query

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

  1. 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:

  1. 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:

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

Her vektör veritabanı sağlayıcısının farklı filtreleme syntax biçimi vardır, ilgili vektör veritabanı belgelerini okumanızı öneririz

  1. 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.

  1. Aşağıdaki ad ve açıklama ile bir Retriever Tool oluşturun:

Ad
Açıklama

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.

  1. Metadata filtresi {source: apple} ile Pinecone düğümüne bağlanın

  1. Aynısını Tesla için de tekrarlayın:

Ad
Açıklama
Pinecone Metadata Filter

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}

Açık ve özlü bir açıklama belirtmek önemlidir. Bu, LLM'nin hangi aracı ne zaman kullanacağına daha iyi karar vermesini sağlar

Flow'unuz aşağıdaki gibi görünmelidir:

  1. Ş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:

  1. Chatflow'u kaydedin ve soru sormaya başlayın!

  1. Tesla ile takip edin:

  1. 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