10 문서를 처리하기 위해 다중 문서 에이전트 래그를 스케일링합니다
소개
이전 블로그 게시물 인 Llamaindex를 사용하여 다중 문서 에이전트 래그를 구축하면서 Llamaindex를 사용하여 세 문서를 처리하고 쿼리 할 수있는 검색 구조 생성 (RAG) 시스템을 만드는 방법을 보여주었습니다. 그것이 강력한 시작 이었지만 실제 응용 프로그램은 종종 더 큰 문서를 처리 할 수있는 능력이 필요합니다.
이 블로그는 해당 시스템을 세 문서에서 11 개 이상으로 확장하는 데 중점을 둘 것입니다. 우리는 코드, 스케일링의 과제 및 더 큰 소스에서 정보를 동적으로 검색 할 수있는 효율적인 에이전트를 구축하는 방법에 뛰어들 것입니다.
학습 목표
- Llamaindex를 사용하여 몇 문서를 처리하여 여러 문서를 처리하여 10 개가 넘는 문서까지 스케일링을 이해합니다.
- RAG 모델을 향상시키기 위해 도구 기반 쿼리 메커니즘을 구축하고 통합하는 방법을 배우십시오.
- 관련 문서와 도구를 효율적으로 검색 할 때 VectorStoreIndex 및 ObjectIndex의 사용을 이해하십시오.
- 많은 문서 세트에서 관련 서류를 검색하여 복잡한 쿼리에 응답 할 수있는 동적 에이전트를 구현하십시오.
- Rag 시스템을 여러 문서로 확장 할 때 과제 및 모범 사례를 식별하십시오.
이 기사는 Data Science Blogathon 의 일부로 출판되었습니다 .
목차
- 소개
- 주요 단계
- 10 문서로 확장 할 때 중요한 과제
- 10 개의 문서를 처리하기위한 코드 구현
- 도구 검색으로 에이전트 래그 향상
- 11 개의 문서를 통한 쿼리
- 결과 및 성능 통찰력
- 결론
- 자주 묻는 질문
주요 단계
이전 블로그에서 나는 정보 검색과 생성 모델과 결합하여 관련 외부 문서를 사용하여 사용자 쿼리에 답변하는 에이전트 래그의 개념을 소개했습니다. 우리는 Llamaindex를 사용하여 간단한 다중 문서 에이전트 걸레를 만들었습니다.
관련된 주요 단계 :
- 섭취 문서화 : 단순한 설명 리더를 사용하여 문서를 청크로로드하고 분할하십시오.
- 인덱스 생성 : 시맨틱 검색 및 요약을위한 SummaryIndex를위한 vectorstoreIndex 활용.
- 에이전트 설정 : OpenAI의 API를 통합하여 문서에서 관련 정보 덩어리를 검색하여 쿼리에 답변합니다.
이 설정은 소수의 문서에 잘 작동했지만 확장성에 도전이 발생했습니다. 세 문서를 넘어 확장함에 따라 도구 관리, 성능 오버 헤드 및 느린 쿼리 응답과 같은 문제가 발생했습니다. 이 게시물은 이러한 과제를 해결합니다.
10 문서로 확장 할 때 중요한 과제
11 개 이상의 문서로 확장하는 것은 몇 가지 복잡성을 소개합니다.
성능 고려 사항
여러 문서에서 쿼리하면 특히 메모리 사용 및 응답 시간 측면에서 계산 부하가 증가합니다. 시스템이 더 많은 수의 문서를 처리하면 빠르고 정확한 응답이 주요 과제가됩니다.
도구 관리
각 문서는 자체 검색 및 요약 도구와 짝을 이루어 시스템은 이러한 도구를 효율적으로 관리하기위한 강력한 메커니즘이 필요합니다.
인덱스 효율성
11 개의 문서를 사용하면 VectorStoreIndex를 사용하는 것이 더욱 복잡해집니다. 인덱스가 클수록 관련 정보를 찾기 위해 시스템이 더 많아서 쿼리 시간을 증가시킬 필요가 있습니다. Llamaindex가 어떻게 이러한 문제를 인덱싱 기술로 효율적으로 처리하는지 논의하겠습니다.
10 개의 문서를 처리하기위한 코드 구현
에이전트 래그를 3 ~ 11 개의 문서로 확장하기 위해 구현에 뛰어 들자.
문서 수집
다음은 다음과 같이 작업 할 11 가지 논문입니다.
- MetAgpt
- Longlora
- 로프트 -q
- Swe-Bench
- 자기 방망이
- zipformer
- 값
- FINETUNE FAIR 확산
- 지식 카드
- 메트라
- VR-MCL
첫 번째 단계는 논문을 다운로드하는 것입니다. 다음은 이것을 자동화하기위한 파이썬 코드입니다.
urls = [ "https://openreview.net/pdf?id=vtmbagcn7o", "https://openreview.net/pdf?id=6pmjorfdak", "https://openreview.net/pdf?id=lzpwwpady4", "https://openreview.net/pdf?id=vtf8ynqm66", "https://openreview.net/pdf?id=hsyw5go0v8", "https://openreview.net/pdf?id=9wd9kwssyt", "https://openreview.net/pdf?id=yv6fd7lykf", "https://openreview.net/pdf?id=hnrb5yhoyu", "https://openreview.net/pdf?id=wbwtoyizik", "https://openreview.net/pdf?id=c5pwl0soay", "https://openreview.net/pdf?id=tpd2ag1h0d" ]] 종이 = [ "Metagpt.pdf", "longlora.pdf", "loftq.pdf", "swebench.pdf", "selfrag.pdf", "zipformer.pdf", "vales.pdf", "Finetune_Fair_Diffusion.pdf", "Knowledge_card.pdf", "metra.pdf", "vr_mcl.pdf" ]] # 논문 다운로드 URL의 경우 zip (urls, papers)의 종이 : ! wget "{url}"-o "{paper}"
도구 설정
문서가 다운로드되면 다음 단계는 각 문서를 쿼리하고 요약하는 데 필요한 도구를 작성하는 것입니다.
llama_index.core import simpledirectoryReader, vectorStoreIndex, summaryIndex llama_index.core.node_parser import sentencesplitter에서 llama_index.core.tools import functionTool, QueryEnginetool llama_index.core.vector_stores에서 metadatafilters, filtercondition 가져 오기 목록 입력에서 선택 사항 def get_doc_tools ( file_path : str, 이름 : str, ) -> str : "" "문서에서 벡터 쿼리 및 요약 쿼리 도구를 가져옵니다." "" # 문서로드 documents = simpledirectoryReader (input_files = [file_path]). load_data () 스플리터 = sentencesplitter (chunk_size = 1024) 노드 = splitter.get_nodes_from_documents (문서) vector_index = VectorStoreIndex (노드) def vector_query ( 쿼리 : str, page_numbers : 선택 사항 [list [str]] = none ) -> str : "" "주어진 논문에 대한 질문에 대답하는 데 사용됩니다. 논문에 대한 구체적인 질문이있는 경우 유용합니다. 검색하려는 특정 페이지가없는 한 항상 page_numbers를 아무것도 남겨 두십시오. Args : 쿼리 (str) : 내장 될 문자열 쿼리. page_numbers (선택 사항 [list [str]] : 페이지 세트별로 필터. 아무것도 떠나십시오 벡터 검색을 수행하려면 모든 페이지에서. 그렇지 않으면 지정된 페이지 세트별로 필터를 필터링하십시오. "" " page_numbers = page_numbers 또는 [] Metadata_dicts = [ { "키": "page_label", "value": p in page _numbers ]] query_engine = vector_index.as_query_engine ( 유사성 _top_k = 2, 필터 = metadatafilters.from_dicts ( 메타 데이터 _dicts, 조건 = FilterCondition.or )) )) 응답 = query_engine.query (query) 반환 응답 vector_query_tool = functionTool.from_defaults ( 이름 = f "vector_tool_ {name}", fn = vector_query )) summary_index = summaryIndex (노드) summary_query_engine = summary_index.as_query_engine ( response_mode = "tree_summarize", use_async = true, )) summary_tool = QueryEnginetool.from_defaults ( 이름 = f "summary_tool_ {name}", query_engine = summary_query_engine, 설명 = ( f "{name}과 관련된 요약 질문에 유용합니다." ),) )) return vector_query_tool, summary_tool
이 기능은 각 문서의 벡터 및 요약 쿼리 도구를 생성하여 시스템이 쿼리를 처리하고 요약을 효율적으로 생성 할 수 있도록합니다.
도구 검색으로 에이전트 래그 향상
이제 우리는 공구 검색으로 에이전트 래그를 향상시킬 것입니다.
에이전트 구축
다음으로 11 개의 문서에서 도구를 검색하고 관리 할 수있는 능력으로 에이전트를 확장해야합니다.
Utils에서 가져 오기 get_doc_tools를 가져옵니다 pathlib 가져 오기 경로에서 paper_to_tools_dict = {} 종이의 종이 : print (f "종이 도구 가져 오기 : {paper}") vector_tool, summary_tool = get_doc_tools (종이, 경로 (종이) .Stem) paper_to_tools_dict [paper] = [vector_tool, summary_tool] all_tools = [paper_to_tools_dict에서 t에 대한 종이의 종이 용 종이 [논문]]
출력은 다음과 같습니다.
도구 검색
다음 단계는 이러한 도구를 통해 "객체"색인을 작성하고 주어진 쿼리의 관련 도구를 동적으로 가져올 수있는 검색 시스템을 구축하는 것입니다.
Llama_index에서 Core import vectorstoreindex llama_index.core.objects import objectIndex에서 obj_index = ObjectIndex.from_objects ( all_tools, index_cls = VectorStoreIndex, )) obj_retriever = obj_index.as_retriever (유사성 _top_k = 3)
이제 시스템은 쿼리를 기반으로 가장 관련성이 높은 도구를 검색 할 수 있습니다.
예를 들어 보자 :
도구 = obj_retriever.retrieve ( "Metagpt 및 SWE-Bench에 사용 된 Eval DataSet에 대해 알려주세요" )) #RetRieves 3 개 객체, 세 번째 개체를 보자 인쇄 (도구 [2] .metadata)
에이전트 설정
이제 도구 리트리버를 에이전트 러너에 통합하여 각 쿼리에 응답 할 최상의 도구를 동적으로 선택할 수 있습니다.
llama_index.core에서 agent import functionCallingAgentWorker llama_index.core. Agent import agentrunner agent_worker = functionCallingAgentWorker.from_tools ( Tool_Retriever = obj_retriever, llm = llm, system_prompt = "" "\ 귀하는 주어진 논문 세트에 대한 쿼리에 답변하도록 설계된 에이전트입니다. 질문에 답변하기 위해 항상 제공된 도구를 사용하십시오. 사전 지식에 의존하지 마십시오. \ "" ", Verbose = true )) 에이전트 = agentrunner (Agent_worker)
11 개의 문서를 통한 쿼리
여러 문서에서 쿼리 할 때 시스템이 어떻게 수행되는지 살펴 보겠습니다. 우리는 MetAgpt 및 SWE-Bench 용지를 모두 쿼리하여 평가 데이터 세트를 비교할 것입니다.
Response = agent.query ( "MetAgpt에 사용 된 평가 데이터 세트에 대해 알려주고 SWE 벤치와 비교하십시오") print (str (응답))
산출:
다른 예를 보자
응답 = Agent.query ( "Lora Papers (Longlora, LoftQ)를 비교하고 대조하십시오. 먼저 각 논문의 접근 방식을 분석하십시오." )) print (str (응답))
산출:
결과 및 성능 통찰력
이제 아래 결과 및 성능 통찰력을 살펴 보겠습니다.
성능 지표
11 개의 문서로 확장 할 때 성능은 강력하게 유지되었지만 3 문서 설정에 비해 쿼리 시간이 약 15-20% 증가한 것을 관찰했습니다. 그러나 전체 검색 정확도는 일관성을 유지했습니다.
확장 성 분석
Llamaindex의 효율적인 청킹 및 인덱싱 덕분 에이 시스템은 매우 확장 가능합니다. 도구를주의 깊게 관리함으로써 최소한의 오버 헤드로 11 개의 문서를 처리 할 수있었습니다. 이 접근법은 더 많은 문서를 지원하기 위해 확장되어 실제 응용 프로그램의 추가 성장을 가능하게합니다.
결론
3 문서에서 11 개의 문서로 확장하는 것은 강력한 걸레 시스템을 구축하는 데 중요한 이정표입니다. 이 접근법은 Llamaindex를 활용하여 시스템의 성능 및 응답 성을 유지하면서 큰 문서 세트를 관리합니다.
Llamaindex를 사용하여 자신의 검색을 강화한 생성 시스템을 스케일링하고 결과를 공유하는 것이 좋습니다. 시작하려면 이전 블로그를 확인하십시오!
Github의 전체 코드 및 리소스를 확인하십시오.
주요 테이크 아웃
- vectorstoreIndex 및 ObjectIndex와 같은 효율적인 인덱싱 방법을 사용하여 더 많은 문서를 처리하기 위해 검색 된 세대 생성 (RAG) 시스템을 확장 할 수 있습니다.
- 에이전트는 문서 (벡터 검색, 요약 도구)에 특정 도구를 할당함으로써 정보 검색을위한 특수한 방법을 활용하여 응답 정확도를 향상시킬 수 있습니다.
- Agentrunner를 도구 검색과 함께 사용하면 에이전트가 쿼리를 기반으로 올바른 도구를 지능적으로 선택하고 적용하여 시스템을보다 유연하고 적응력있게 할 수 있습니다.
- 많은 수의 문서를 다룰 때에도 RAG 시스템은 모든 콘텐츠를 검색하는 대신 도구를 동적으로 검색하고 적용하여 응답 성과 정확성을 유지할 수 있습니다.
- 성능과 정확성을 보장하기 위해 RAG 시스템을 확장 할 때 청킹, 공구 할당 및 인덱싱 전략을 최적화하는 것이 중요합니다.
자주 묻는 질문
Q1. 다중 문서 에이전트 래그 시스템에서 3 문서와 10 문서를 처리하는 것의 차이점은 무엇입니까?A. 3 문서를 처리하려면 더 간단한 인덱싱 및 검색 프로세스가 필요합니다. 문서 수가 증가함에 따라 (예 : 10), 성능과 정확성을 유지하기 위해 ObjectIndex 및 공구 검색과 같은보다 정교한 검색 메커니즘이 필요합니다.
Q2. VectorStoreIndex 및 ObjectIndex는 어떻게 스케일링 걸레 시스템에 기여합니까?A. VectorStoreIndex는 유사성을 기반으로 문서 청크를 효율적으로 검색하는 데 도움이되는 반면 ObjectIndex를 사용하면 다른 문서와 관련된 도구를 저장하고 검색 할 수 있습니다. 그들은 함께 대규모 문서 세트를 효과적으로 관리하는 데 도움이됩니다.
Q3. 여러 문서로 확장 할 때 공구 기반 검색이 중요한 이유는 무엇입니까?A. 도구 기반 검색을 통해 시스템은 각 문서에 특수 도구 (예 : 벡터 검색 또는 요약)를 적용하여 모든 문서를 동일한 방식으로 처리하는 것과 비교하여 답변의 정확도를 향상시키고 계산 시간을 줄일 수 있습니다.
Q4. 더 많은 문서를 처리하기 위해이 설정을 어떻게 수정할 수 있습니까 (예 : 20)?A. 더 많은 문서를 처리하려면 인덱싱을 미세 조정하고 분산 컴퓨팅 기술을 사용하여 도구를 적용하기 전에 문서 세트를 좁히기 위해 고급 필터링 메커니즘을 도입하여 검색 프로세스를 최적화 할 수 있습니다.
Q5. 다중 문서 에이전트 래그 시스템을 효과적으로 스케일링하기위한 주요 전략은 무엇입니까?A. 멀티 문서 에이전트 RAG 시스템을 스케일링하려면 데이터 검색 방법 최적화, 효율적인 인덱싱 전략 구현, 고급 언어 모델을 활용하여 쿼리 정확도를 향상시킵니다. Llamaindex와 같은 도구를 사용하면 여러 문서의 더 나은 관리를 촉진하고 관련 정보에 대한 적시에 액세스 할 수 있도록 시스템 성능을 크게 향상시킬 수 있습니다.
이 기사에 표시된 미디어는 분석 Vidhya가 소유하지 않으며 저자의 재량에 따라 사용됩니다.
위 내용은 10 문서를 처리하기 위해 다중 문서 에이전트 래그를 스케일링합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Vibe Coding은 끝없는 코드 라인 대신 자연 언어를 사용하여 애플리케이션을 생성함으로써 소프트웨어 개발의 세계를 재구성하고 있습니다. Andrej Karpathy와 같은 비전가들로부터 영감을 얻은이 혁신적인 접근 방식은 Dev가

2025 년 2 월은 Generative AI의 또 다른 게임 변화 달이었으며, 가장 기대되는 모델 업그레이드와 획기적인 새로운 기능을 제공합니다. Xai 's Grok 3 및 Anthropic's Claude 3.7 Sonnet, Openai 's G에 이르기까지

Yolo (한 번만 보이면)는 주요 실시간 객체 감지 프레임 워크였으며 각 반복은 이전 버전에서 개선되었습니다. 최신 버전 Yolo V12는 정확도를 크게 향상시키는 발전을 소개합니다.

ChatGpt 4는 현재 이용 가능하고 널리 사용되며 ChatGpt 3.5와 같은 전임자와 비교하여 상황을 이해하고 일관된 응답을 생성하는 데 상당한 개선을 보여줍니다. 향후 개발에는보다 개인화 된 인터가 포함될 수 있습니다

이 기사는 최고의 AI 아트 생성기를 검토하여 자신의 기능, 창의적인 프로젝트에 대한 적합성 및 가치에 대해 논의합니다. Midjourney를 전문가에게 최고의 가치로 강조하고 고품질의 사용자 정의 가능한 예술에 Dall-E 2를 추천합니다.

Google Deepmind 's Gencast : 일기 예보를위한 혁신적인 AI 일기 예보는 기초 관측에서 정교한 AI 구동 예측으로 이동하여 극적인 변화를 겪었습니다. Google Deepmind의 Gencast, 획기적인

이 기사에서는 AI 모델이 Lamda, Llama 및 Grok과 같은 Chatgpt를 능가하는 것에 대해 논의하여 정확성, 이해 및 산업 영향의 장점을 강조합니다. (159 자).

OpenAi의 O1 : 12 일 선물 Spree는 아직 가장 강력한 모델로 시작합니다. 12 월의 도착은 세계의 일부 지역에서 전 세계적으로 속도가 저하 된 눈송이를 가져 오지만 Openai는 막 시작되었습니다. Sam Altman과 그의 팀은 12 일 선물을 시작하고 있습니다.
