Sobes.tech
Middle — Senior

Hogyan kombináljuk az RAG-ot eszközhasználattal és funkcióhívásokkal?

sobes.tech MI

Válasz az MI-től

A RAG (Retrieval-Augmented Generation) hatékonyan integrálható eszközök (tool use) és funkcióhívások (function calling) alkalmazásával, hogy erősebb és kontextusban tudatosabb rendszereket hozzunk létre.

Az ötlet lényege:

  1. RAG felelős a releváns információk kereséséért és kinyeréséért külső forrásokból (tudásbázisok, dokumentumok).
  2. Eszközhasználat — külső eszközök vagy API-k használata, amelyek specifikus feladatokat hajtanak végre (pl. kalkulátor, adatbázis, szolgáltatások).
  3. Funkcióhívás — mechanizmus, amely lehetővé teszi a nagy nyelvi modellek (LLM) számára, hogy előre definiált funkciókat hívjanak meg paraméterekkel, strukturált választ vagy művelet végrehajtását érve el.

Hogyan kombináljuk:

  • Először a RAG kinyeri a releváns adatokat, amelyeket ezután átad az LLM-nek.
  • Az LLM elemzi a kérdést és a kontextust, és szükség esetén meghív egy funkciót (function calling) egy adott feladat végrehajtására vagy eszköz elérésére.
  • Az eszköz végrehajtja a feladatot és visszaküldi az eredményt az LLM-nek.
  • Az LLM generálja a végső választ, felhasználva mind a kinyert adatokat, mind a funkcióhívások eredményeit.

Példa: egy chatbot, amely a tudásbázist (RAG) használva válaszol kérdésekre, és szükség esetén meghív egy kalkulátort (tool) a calculate(expression) funkcióval.

# Pseudocode
retrieved_docs = rag_retrieve(query)
response = llm.generate(
    prompt=query + retrieved_docs,
    function_call='calculate' ha needs_calculation(query) különben None
)
if response.function_call:
    result = calculate(response.function_call.arguments['expression'])
    final_answer = llm.generate(prompt=f"Számítás eredménye: {result}")
else:
    final_answer = response.text

Így a RAG biztosítja a kontextust, az eszközhasználat bővíti a lehetőségeket, és a funkcióhívás strukturálja az interakciót az LLM és a külső szolgáltatások között.