Vlastní AI chatbot 3) Autonomní RAG

auto rag chatbot

Toto je seriál, kde budu postupně ukazovat vývoj vlastního AI/LLM chatbota. Něco jako chatGPT na vlastních datech, pro určitý účel použití. V tomto dílu vám ukážu, jak jsem nastavil do Streamlit prostředí Auto RAG, který se sám umí rozhodnout, jaký zdroj informací pro odpověď použije.

Původně jsem chtěl ukázat klasický RAG (napojení na vlastní data) s vložením vlastního PDF dokumentu. Než jsem však článek stačil napsat, tak se objevilo řešení, které mě natolik zaujalo, že jsem se rozhodl ho hned zařadit do tohoto seriálu.

Jedná se o Autonomní RAG systém, který se umí rozhodnout, jaký typ zdroje si vybere pro nejlepší možnou odpověď.

RAG chatbot

Má na výběr následující komponenty:

  • Paměť napojenou na Postgres databázi (historie chatu, sumarizace)
  • Knowledge napojenou na PgVector (pdf, url)
  • Nástroje (vyhledávání)

Na základě otázky se asistent/agent rozhodne, který nástroj použije pro co nejlepší odpověď.

Příklad: Hledáte aktuální informace? Agent použije search engine DuckDuckGo.

Ptáte se na konkrétní vložený dokument? Agent použije RAG a poskytne odpověď na základě informací z dokumentu.

Chcete shrnout všechny odpovědi v chatu? Agent použije informace z uložené paměti a následně zpracuje do souhrnu.

Technologie

Chatbot obsahuje následující komponenty:

System prompt

Zde jsou instrukce pro asistenta, jaké nástroje má používat a v jakém případě:

description=“You are an Assistant called ‚AutoRAG‘ that answers questions by calling functions.“,
instructions
„First get additional information about the users question.“,
„You can either use the search_knowledge_base tool to search your knowledge base or the duckduckgo_search tool to search the internet.“,
„If the user asks about current events, use the duckduckgo_search tool to search the internet.“,
„If the user asks to summarize the conversation, use the get_chat_history tool to get your chat history with the user.“,
„Carefully process the information you have gathered and provide a clear and concise answer to the user.“,
„Respond directly to the user with your answer, do not say ‚here is the answer‘ or ‚this is the answer‘ or ‚According to the information provided'“,
„NEVER mention your knowledge base or say ‚According to the search_knowledge_base tool‘ or ‚According to {some_tool} tool‘.“

Zdrojový kod zde.

Uživatelské rozhraní

V levém sloupci máme následující možnosti výběru:

  • Model – Llama 3 70B, Llama 3 8B (další dle potřeby)
  • Embeddings – OpenAI nebo Ollama
  • Možnost vložení url webu
  • Vložení PDF do 200 MB
  • Vyčistit databázi
  • Zvolit ID operace, nebo vytvořit nový běh

Uprostřed stránky klasický chat s možností vidět celou historii dotazů a případně i reagovat na předchozí zprávy, shrnutí všech zpráv, atd.

Testování

Zkusíme několik dotazů na různé případy použití.

Dotaz na studii LLM ve vloženém pdf.

Make a brief summary of the whole study, including main points, method and conclusion.

Who are the authors of the study?

(zde jsem měl trochu problém, aby se model zaměřil na dané pdf, ale nakonec se povedlo)

Find me who is Chenhui Cui.

(zde je důležité to slovo find, jinak se může stát, že bude prohledávat jiné zdroje, než internet a hodí vám to bad request)

Did Chenhui Cui participate in the Large Language Models for Mobile GUI Text Input Generation: An Empirical Study?

Find me what scientific papers did he write?

Otázky ohledně aktuálních informací.

Ukázka konverzace

Zde jsem vložil url z webu openAI a následně se dotazoval na otázky. Jedna otázka byl zodpovězena pomocí vyhledávače. Nakonec jsem požádal o shrnutí celé konverzace.

Tell me more about semantic search in relation to embeddings models.

Kombinace RAG + Search tool + Memory se jeví jako velmi užitečná. Myslím si, že takový chatbot, který má více nástrojů, bude používaný čím dál častěji. Je to vlastně obdoba chatGPT, ale mnohem rychlejší, levnější a s možností zabudovat tyto nástroje do vašeho vlastního lokálního případu použití. Občas jsem narážel na problém, že asistent hledal odpověď v databázi, místo vyhledávače a jindy zase nereagoval ohledně předchozí komunikace. Ale je to spíše věc dobrého promptu a nastavení podmínek pro spuštění daných akcí. Když jsem správně specifikoval a upřesnil otázku, tak jsem se správné odpovědi dočkal.

Všechny díly:

Obsah článku

Líbí se Vám obsah?

Odebírejte Newsletter, ať vám nic neunikne.

Odebírejte novinky ze světa AI

Chcete-li se přihlásit k odběru tohoto blogu a dostávat upozornění na nové příspěvky e-mailem, zadejte svou e-mailovou adresu.

Sledujte mě na sítích.

Odběr novinek AI

Odebírejte novinky ze světa AI

Chcete-li se přihlásit k odběru tohoto blogu a dostávat upozornění na nové příspěvky e-mailem, zadejte svou e-mailovou adresu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Podobné články

školení chatGPT

Praktické Školení chatGPT

Nabízím praktické školení chatGPT pro firmy i jednotlivce. Díky tomuto kurzu se dozvíte, jak chat GPT používat při každodenní práci i na pomoc v osobním

Číst více »