Kontexte
Ein kürzlich erschienener Artikel mit dem Titel Search-R1: Training von LLMs zum Verstehen und Nutzen von Suchmaschinen mit Reinforcement Learning Dissertation zum Thema "Die Zukunft der Vereinten Nationen" (arxiv.org/pdf/2503.09516) hat viel Aufmerksamkeit auf sich gezogen. Das Papier schlägt einen neuen Weg zum Trainieren von Large Language Models (LLMs) unter Verwendung von Reinforcement Learning für die Argumentation und Nutzung von Suchmaschinen vor. Es ist erwähnenswert, dass einige der Ideen in dem Papier denen ähneln, die von Qwens Team in QwQ-32B Die Erkundung des Modells stimmt überein.
Das kürzlich von Alibaba veröffentlichte QwQ-32B (qwenlm.github.io/zh/blog/qwq-32b/) integriert agentenbezogene Fähigkeiten in das Schlussfolgerungsmodell. Diese Fähigkeiten ermöglichen es dem Modell, während der Verwendung des Werkzeugs kritisch zu denken und den Argumentationsprozess auf der Grundlage von Rückmeldungen aus der Umgebung anzupassen. Im Modellordner QwQ-32B im Verzeichnis hinzugefügt_tokens.json
können Sie die speziellen Token sehen, die für Tool-Aufrufe und Tool-Antworten hinzugefügt wurden:
{
"": 151668,
"": 151658,
"": 151666, "": 151667,
"": 151667.
"": 151665
}
In diesem Papier werden wir Agentic RAG Als Beispiel werden die Möglichkeiten des Modells QwQ-32B in Bezug auf den Aufruf von Werkzeugen demonstriert.
Agentische RAG vs. Traditionelle RAG
Um die Vorteile von Agentic RAG besser zu verstehen, müssen wir zunächst zwischen Agentic RAG und dem derzeit vorherrschenden Paradigma der RAG-Praxis unterscheiden:
- Traditionelle RAGDie überwiegende Mehrheit der heutigen RAG-Projekte sind im Wesentlichen Workflows, d.h. Systeme, die LLMs und Werkzeuge durch vordefinierte Codepfade orchestrieren. Dieser künstlich vordefinierte, "zu Tode geschriebene" Workflow besteht aus vielen miteinander verknüpften, aber fragilen Teilen wie Routing, Chunking, Reordering, Query-Interpretation, Query-Expansion, Source-Kontextualisierung und Search Engineering.
- NachteileEs ist schwierig, in einem vom Menschen gesteuerten Arbeitsablauf alle Eckfälle abzudecken. Vor allem in komplexen Szenarien, die mehrere Abfragerunden erfordern, ist die Wirkung begrenzt.
- Agentische RAGEin End-to-End-Ansatz wird verwendet, um den Prozess zu vereinfachen. Es genügt, das Modell mit einem API-Tool für den vernetzten Abruf auszustatten (in diesem Fall wurde die Tavily-API verwendet, für die ein gewisses Kontingent an kostenlosen Credits zur Verfügung steht), und das Modell erledigt den Rest der Arbeit selbstständig, einschließlich, aber nicht beschränkt auf:
- Absicht zu verstehen (Beurteilung, ob Vernetzung erforderlich ist)
- Umformulierung oder Aufteilung der Frage
- Schnittstellenaufruf
- Prozess-Choreographie (einschließlich der Frage, ob und wie man mehrstufige Suchen durchführt)
- etw. als Quelle von etw. anführen
- ...
Einfach ausgedrückt, ist das Kernkonzept der Agentic RAG:Weniger Struktur, mehr Intelligenz, Weniger ist mehr.
genau wie Anthropisch Definition des Agentenmodells: Ähnlich wie bei der Tiefensuche müssen die Agenten die Zielaufgabe intern ausführen, und sie "steuern dynamisch ihre eigenen Prozesse und die Verwendung von Werkzeugen, um die Art und Weise zu kontrollieren, in der die Aufgabe erfüllt wird".
Gesamtprozess
Die folgende Abbildung veranschaulicht den Gesamtablauf von Agentic RAG:
- Anpassung der Benutzerfragen an die Wortvorlagen.
- Ruft das Modell auf, um ein neues Token zu erzeugen. Wenn der Erzeugungsprozess nicht zu einem
...
dann wird das Rückgabeergebnis direkt ausgegeben. - Im Falle von
...
dann bedeutet dies, dass das Modell während des Argumentationsprozesses einen Werkzeugaufruf initiiert hat. Das Parsen dieser Anfrage, die Ausführung vonweb_search
und wickelt die Ergebnisse des Schnittstellenaufrufs in...
formatiert, in den Kontext des Makromodells eingefügt und erneut zur Makromodellerstellung angefordert. - Wiederholen Sie die obigen Schritte, bis es keine weiteren
(oder das Anfragelimit erreicht ist) oder das Vorhandensein von
.
Das Verfahren ist im Wesentlichen dasselbe wie das im Search-R1-Papier beschriebene:
Wichtige technische Punkte
- Cue word-Vorlagen::
user_question = input('Bitte geben Sie Ihre Frage ein:')
max_search_times = 5
prompt = f"""Du bist Qwen QwQ, eine neugierige KI, die für die retrival augmented generation gebaut wurde.
Du bist im Jahr 2025 und das aktuelle Datum ist {date.today()}.
Du hast Zugriff auf das web_search-Tool, um relevante Informationen zu finden, die bei der Beantwortung von Benutzerfragen helfen.
Sie können web_search bis zu {max_search_times} mal verwenden, um die Frage eines Benutzers zu beantworten, aber versuchen Sie, effizient zu sein und so wenig wie möglich zu verwenden.
Im Folgenden finden Sie einige Richtlinien.
- Verwenden Sie web_search für allgemeine Internetanfragen, wie z. B. die Suche nach aktuellen Ereignissen oder sachlichen Informationen.
- Geben Sie immer eine abschließende Antwort in klarer und prägnanter Form, mit Zitaten für alle Informationen, die Sie aus dem Internet erhalten haben.
- Wenn Sie glauben, dass Sie ein Tool verwenden müssen, formatieren Sie Ihre Antwort als Tool-Aufruf mit `action` und `action_input` innerhalb von ... , etwa so:\n\n{{"action": "web_search", "action_input": {{ "query": "current stock price of Tesla" }}\n .
- Nach der Verwendung eines Tools. weiter Ihre Argumentation auf der Grundlage des web_search-Ergebnisses in ... .
- Denken Sie daran, dass Sie alle Suchaufgaben durchführen müssen, bevor Sie eine endgültige Antwort geben, wenn Sie die web_search in mehreren Schritten durchführen müssen, um relevante Informationen zu finden.
---
Benutzerfrage:{user_question}""""
- Individuelle Stoppschilder::
Wenn festgestellt wird, dass das Modell einen autoregressiven Erzeugungsprozess während der
(. *?) \s*$
Die Generierung endet nach dem Format (Übereinstimmung mit dem regulären Ausdruck):
from transformers importieren (
AutoModelForCausalLM,
AutoTokenizer, AutoModelForCausalLM, AutoTokenizer, StoppingCriteria
StoppingCriteria, StoppingCriteriaList, StoppingCriteriaList, StoppingCriteriaList
StoppingCriteriaList
)
Fackel importieren
re importieren
tool_call_regex = r"(.. *?) \s*$"
end_regex = r"\s*$"
# Gleichzeitige Überwachung: oder
class RegexStoppingCriteria(StoppingCriteria).
def __init__(self, tokeniser, patterns).
self.patterns = patterns
self.tokenizer = tokenizer
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool.
decoded_text = self.tokenizer.decode(input_ids[0])
for pattern in self.patterns:: if re.search(pattern, decode).decode(input_ids[0])
if re.search(pattern, decoded_text, re.DOTALL):: if re.search(pattern, decoded_text, re.DOTALL).
return True
return False
Anhaltekriterien = AnhaltekriterienListe([)
RegexStoppKriterien(
tokenizer, [tool_call_criteria], [stopping_criteria
patterns=[tool_call_regex, end_regex]
)
])
#model.generate(... , stopping_criteria=stopping_criteria) # add stopping_criteria
- Web-Such-API::
Die Such-API, die in dieser Praxis verwendet wird, ist die Tavily-API, die ein gewisses Maß an kostenlosem Guthaben bietet, um das Experimentieren und die Replikation zu erleichtern, und die es Entwicklern ermöglicht, Websuchfunktionen durch einfache API-Aufrufe in ihre Anwendungen zu integrieren.
Verhaltenskodex
Einen ausführlichen Praxiskodex finden Sie unter folgendem Link:
Testfälle
Probleme beim TestenBitte geben Sie mir mehr Informationen über das Modell QwQ-32B, das Ali kürzlich als Open Source veröffentlicht hat.
Ergebnisse generieren(vollständige Ergebnisse siehe Notizbuch)
Wie aus den Ergebnissen ersichtlich ist, führt das Inferenzmodell selbstständig das Verstehen der Absicht (Feststellung, ob eine vernetzte Suche erforderlich ist) und die Generierung von Suchbegriffen (Umschreiben oder Aufteilen von Fragen) durch. Das Modell berücksichtigt auch potenzielle Mehrrunden-Suchszenarien. Nach dem Auslösen einer Web-Suche
Anschließend erstellt das Modell einen Abschlussbericht auf der Grundlage der Suchergebnisse.
In diesem Fall hat das Modell nur einen Aufruf der Suchschnittstelle durchgeführt. Dies kann auf die Einfachheit des Fallproblems zurückzuführen sein oder darauf, dass das Basismodell noch nicht in der Lage ist, komplexe Mehrrunden-Suchen auszulösen. Dies zeigt auch, dass es, um das Potenzial des Modells als intelligente Instanz voll auszuschöpfen, immer noch notwendig ist, Search-R1 für das Nachtraining und die gezielte Feinabstimmung heranzuziehen.
Ausgehend von den Fähigkeiten, die das Modell QwQ-32B bereits demonstriert hat, kann die Kombination aus gut konzipierten synthetischen (oder manuell sortierten) Umschulungsdaten und Reenforcement-Training oder SFT in segmentierten Szenarien sowie die Ausblendung der von der Werkzeugschnittstelle zurückgegebenen Antwort Token Es wird erwartet, dass dieser Weg des Retrainings zum Hauptbestandteil der zukünftigen Entwicklung und des Einsatzes von Intelligenz wird, da die entsprechenden Verluste für eine Vielzahl von Aktionen und Grenzfällen im Voraus berücksichtigt werden können, was den Einsatz vereinfacht und die Notwendigkeit einer menschlichen Orchestrierung des Design-Workflows eliminiert. Retraining ermöglicht die Vorabberücksichtigung verschiedener Aktionen und Grenzfälle, was den Einsatz vereinfacht und die Notwendigkeit menschlich orchestrierter Design-Workflows eliminiert. Abschnitt 3.1 des Search-R1 Papiers beschreibt detailliert die "Loss Masking for Retrieved Wertmarken"Technologie. Durch den Einsatz des PPO und GRPO in dem die abgerufenen Token verlustmaskiert sind, optimiert Search-R1 das LLM, um Token zu generieren, und verbessert so die Fähigkeit des Modells, mit Suchmaschinen zu interagieren und Inferenzen durchzuführen.
Darüber hinaus unterstützt Search-R1 Multi-Round Retrieval und Inferenz (Abschnitt 3.2 "Textgenerierung mit Interleaved Multi-Turn Search Engine Call" in der Dissertation) durch die im Gesang antworten
auslöst und den abgerufenen Inhalt in die
im Gesang antworten
zwischen. Die Ausgabe der endgültigen Antwort hingegen verwendet die
im Gesang antworten
.