컨텍스트
최근 기사 제목 Search-R1: 강화 학습을 통해 검색 엔진을 추론하고 활용할 수 있도록 LLM 교육하기 "유엔의 미래"를 주제로 한 논문(arxiv.org/pdf/2503.09516)이 많은 주목을 받고 있습니다. 이 논문은 추론과 검색 엔진 활용을 위해 강화 학습을 사용하여 대규모 언어 모델(LLM)을 훈련하는 새로운 방법을 제안합니다. 이 논문의 일부 아이디어는 Qwen의 팀이 다음과 같이 개발한 아이디어와 유사하다는 점에 주목할 필요가 있습니다. QwQ-32B 모델에 대한 탐색이 일치합니다.
알리바바가 최근 출시한 QwQ-32B(qwenlm.github.io/zh/blog/qwq-32b/)는 추론 모델에 에이전트 관련 기능을 통합합니다. 이러한 기능을 통해 모델은 도구를 사용하는 동안 비판적으로 사고하고 환경의 피드백에 따라 추론 프로세스를 조정할 수 있습니다. QwQ-32B 모델 폴더의 added_tokens.json
파일에서 도구 호출 및 도구 응답을 위해 추가된 특수 토큰을 확인할 수 있습니다:
{
"</think>": 151668,
"</tool_call>": 151658,
"</tool_response>": 151666,
"<think>": 151667,
"<tool_call>": 151657,
"<tool_response>": 151665
}
이 백서에서는 에이전틱 RAG 예를 들어, 도구 호출 측면에서 QwQ-32B 모델의 기능이 입증되었습니다.
에이전트 래그 대 기존 래그
에이전트 RAG의 이점을 더 잘 이해하기 위해서는 먼저 에이전트 RAG와 현재 일반적인 RAG 관행의 패러다임을 구분할 필요가 있습니다:
- 전통적인 RAG오늘날 대부분의 RAG 프로젝트는 기본적으로 워크플로, 즉 미리 정의된 코드 경로를 통해 LLM과 도구를 오케스트레이션하는 시스템입니다. 인위적으로 미리 정의된 이 "죽기 위해 작성된" 워크플로는 라우팅, 청킹, 재정렬, 쿼리 해석, 쿼리 확장, 소스 문맥화, 검색 엔지니어링 등 상호 연관되어 있지만 취약한 많은 부분으로 구성되어 있습니다.
- 단점사람이 조율하는 워크플로에서는 모든 코너 케이스를 다루기 어렵습니다. 특히 여러 차례의 검색이 필요한 복잡한 시나리오에서는 그 효과가 더욱 제한적입니다.
- 에이전트 RAG엔드투엔드 접근 방식으로 프로세스를 간소화하세요. 모델에 네트워크 검색을 위한 API 도구를 장착하기만 하면 됩니다(이 백서의 경우에는 Tavily API, 일정량의 무료 크레딧 포함), 나머지 작업은 모두 모델 자체에서 수행합니다:
- 이해하려는 의도(네트워킹이 필요한지 판단)
- 질문 다시 작성 또는 나누기
- 인터페이스 호출
- 프로세스 절차(다단계 검색 수행 여부 및 방법 포함)
- STH의 출처로 인용합니다.
- ...
간단히 말해, 에이전틱 RAG의 핵심 개념은 다음과 같습니다:적은 구조, 더 많은 인텔리전스, 적은 것이 더 많은 것.
정확하게 인류학 에이전트 모델의 정의: 딥서치와 마찬가지로 에이전트는 내부적으로 대상 작업을 수행해야 하며, "자체 프로세스와 도구 사용을 동적으로 지시하여 작업 수행 방식을 제어"합니다.
전체 프로세스
다음 그림은 에이전틱 RAG의 전반적인 흐름을 보여줍니다:
![[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用-1 [转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用](https://aisharenet.com/wp-content/uploads/2025/03/b04be76812d1a15.jpg)
- 사용자 질문을 프롬프트 단어 템플릿에 맞게 조정하세요.
- 모델을 호출하여 새 토큰을 생성합니다. 만약 생성 프로세스에서
<tool_call> ... </tool_call>
를 누르면 반환 결과가 바로 출력됩니다. - 다음과 같은 경우
<tool_call> ... </tool_call>
로 표시되면 추론 프로세스 중에 모델이 도구 호출 요청을 시작했음을 나타냅니다. 이 요청을 파싱하여web_search
를 호출하고 인터페이스 호출의 결과를<tool_response> ... </tool_response>
형식을 매크로 모델의 컨텍스트에 접합한 다음 매크로 모델 생성을 위해 다시 요청합니다. - 더 이상 남지 않을 때까지 위 단계를 반복합니다.
<tool_call>
(또는 요청 한도에 도달)이 있거나<|im_end|>
.
이 프로세스는 Search-R1 문서에 설명된 것과 본질적으로 동일합니다:
![[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用-2 [转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用](https://aisharenet.com/wp-content/uploads/2025/03/32ec214ace69432.jpg)
주요 기술 포인트
- 큐 워드 템플릿::
user_question = input('请输入你的问题:')
max_search_times = 5
prompt = f"""You are Qwen QwQ, a curious AI built for retrival augmented generation.
You are at 2025 and current date is {date.today()}.
You have access to the web_search tool to retrival relevant information to help answer user questions.
You can use web_search tool up to {max_search_times} times to answer a user's question, but try to be efficient and use as few as possible.
Below are some guidelines:
- Use web_search for general internet queries, like finding current events or factual information.
- Always provide a final answer in a clear and concise manner, with citations for any information obtained from the internet.
- If you think you need to use a tool, format your response as a tool call with the `action` and `action_input` within <tool_call>...</tool_call>, like this:\n<tool_call>\n{{ "action": "web_search", "action_input": {{ "query": "current stock price of Tesla" }} }}\n</tool_call>.
- After using a tool, continue your reasoning based on the web_search result in <tool_response>...</tool_response>.
- Remember that if you need multi-turn web_search to find relevant information, make sure you conduct all search tasks before you provide a final answer.
---
User Question:{user_question}"""
- 맞춤형 정지 표지판::
모델이 자동 회귀 생성 프로세스를 트리거한 것으로 감지되는 경우
<tool_call>(.*?)</tool_call>\s*$
형식(정규식 일치) 뒤에 생성이 중지됩니다:
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
StoppingCriteria,
StoppingCriteriaList
)
import torch
import re
tool_call_regex = r"<tool_call>(.*?)</tool_call>\s*$"
end_regex = r"<\|im_end\|\>\s*$"
# 同时监测: <tool_call> 或 <|im_end|>
class RegexStoppingCriteria(StoppingCriteria):
def __init__(self, tokenizer, 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, decoded_text, re.DOTALL):
return True
return False
stopping_criteria = StoppingCriteriaList([
RegexStoppingCriteria(
tokenizer,
patterns=[tool_call_regex, end_regex]
)
])
#model.generate(..., stopping_criteria=stopping_criteria) # 加上停止符
- 웹 검색 API::
이 실습에 사용된 검색 API는 실험과 복제를 용이하게 하기 위해 일정량의 무료 크레딧을 제공하는 Tavily API로, 개발자는 간단한 API 호출을 통해 웹 검색 기능을 애플리케이션에 통합할 수 있습니다.
연습 코드
자세한 실천 코드는 다음 링크를 참조하세요:
딥서치 복제 챕터: 에이전틱 RAG를 예로 들어 QwQ-32B ToolCall 함수를 먼저 살펴보기.ipynb
테스트 사례
테스트 문제최근 Ali가 오픈소스로 공개한 QwQ-32B 모델에 대한 자세한 정보를 알려주세요.
결과 생성(전체 결과는 노트북 참조)
![[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用-3 [转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用](https://aisharenet.com/wp-content/uploads/2025/03/7a838e98b513191.jpg)
![[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用-4 [转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用](https://aisharenet.com/wp-content/uploads/2025/03/0a043ad18e517ec.jpg)
![[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用-5 [转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用](https://aisharenet.com/wp-content/uploads/2025/03/ffccf8080820002.jpg)
결과에서 볼 수 있듯이 추론 모델은 의도 이해(네트워크 검색이 필요한지 여부 판단)와 검색 키워드 생성(질문 재작성 또는 분할)을 자율적으로 수행합니다. 이 모델은 잠재적인 다라운드 검색 시나리오도 고려합니다. 트리거 후 web search
그 후 모델은 검색 결과를 기반으로 최종 보고서를 생성합니다.
이 경우 모델은 검색 인터페이스 호출을 한 번만 완료했습니다. 이는 케이스 문제가 단순하거나 기본 모델이 아직 복잡한 다중 라운드 검색을 트리거할 수 있을 만큼 충분한 성능을 갖추지 못했기 때문일 수 있습니다. 이는 또한 지능형 바디로서 모델의 잠재력을 최대한 활용하려면 사후 학습 및 목표 미세 조정을 위해 Search-R1을 참조해야 한다는 것을 보여줍니다.
그러나 QwQ-32B 모델에서 이미 입증된 기능을 통해 잘 설계된 합성(또는 수동으로 분류된) 재훈련 데이터와 세그먼트화된 시나리오에서 재강화 훈련 또는 SFT를 결합하고 도구 인터페이스 응답으로 반환된 출력을 마스킹하는 기능을 사용할 수 있습니다. 토큰 이 재교육 경로는 다양한 작업과 경계 사례에 대해 해당 손실을 미리 고려할 수 있으므로 배포가 더 간단해지고 설계 워크플로우의 인적 조율이 필요 없기 때문에 향후 인텔리전스 개발 및 배포의 주류가 될 것으로 예상됩니다. 재교육을 통해 다양한 작업과 경계 사례를 미리 고려할 수 있으므로 배포가 더 쉬워지고 사람이 조율하는 설계 워크플로우가 필요하지 않습니다. Search-R1 백서의 섹션 3.1에서는 '검색된 데이터에 대한 손실 마스킹'에 대해 자세히 설명합니다. 토큰" 기술. PPO와 GRPO 검색된 토큰이 손실 마스킹된 경우, Search-R1은 토큰을 생성하도록 LLM을 최적화하여 검색 엔진과 상호 작용하고 추론을 수행하는 모델의 기능을 향상시킵니다.
또한 Search-R1은 논문의 3.2절 "인터리브 멀티턴 검색 엔진 호출을 사용한 텍스트 생성" 섹션을 통해 다라운드 검색 및 추론(논문에서 "인터리브 멀티턴 검색 엔진 호출을 사용한 텍스트 생성")을 지원합니다. <search>
노래로 응답 </search>
트리거하고 검색된 콘텐츠를 <information>
노래로 응답 </information>
사이를 사용합니다. 반면에 최종 답변의 출력에는 <answer>
노래로 응답 </answer>
.
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...