📑 PageIndex: Document Index for Vectorless, Reasoning-based RAG
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
<div align="center">
<a href="https://vectify.ai/pageindex" target="_blank"> <img src="https://github.com/user-attachments/assets/46201e72-675b-43bc-bfbd-081cc6b65a1d" alt="PageIndex 배너" /> </a>
<br/> <br/>
<p align="center"> <a href="https://trendshift.io/repositories/14736" target="_blank"><img src="https://trendshift.io/api/badge/repositories/14736" alt="VectifyAI%2FPageIndex | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> </p>
<p align="center"><b>추론 기반 RAG ◦ 벡터 DB 불필요, 청킹 불필요 ◦ 컨텍스트 인식 검색 ◦ 인간처럼 읽기</b></p>
<h4 align="center"> <a href="https://vectify.ai">🌐 웹사이트</a> • <a href="https://chat.pageindex.ai">🖥️ 채팅 플랫폼</a> • <a href="https://pageindex.ai/developer">🔌 MCP 및 API</a> • <a href="https://docs.pageindex.ai">📖 문서</a> • <a href="https://discord.com/invite/VuXuf29EUj">💬 Discord</a> • <a href="https://ii2abc2jejf.typeform.com/to/tK3AXl8T">✉️ 문의</a> </h4>
</div>
<details open> <summary><h2>📢 업데이트</h2></summary>
<!-- 🧪 Cookbooks:
</details>
전문 장문 문서에 대한 벡터 데이터베이스 검색 정확도에 좌절한 적이 있나요? 전통적인 벡터 기반 RAG는 진정한 관련성보다는 의미적 유사성에 의존합니다. 하지만 유사성 ≠ 관련성 — 검색에서 진정으로 필요한 것은 관련성이며, 이를 위해서는 추론이 필요합니다. 컨텍스트 이해, 도메인 전문 지식, 다단계 추론을 요구하는 전문 문서를 다룰 때 유사성 검색은 종종 부족합니다 — 관련성이 있지만 유사하지 않은 것은 놓치고, 유사하지만 관련 없는 것은 반환합니다.
AlphaGo에서 영감을 받아, 우리는 PageIndex 를 제안합니다 — 장문 문서에서 계층적 트리 인덱스를 구축하고 LLM을 사용하여 해당 인덱스에 대해 추론하여 에이전틱, 컨텍스트 인식 검색을 수행하는 벡터리스, 추론 기반 RAG 시스템입니다. 검색은 추적 가능하고 설명 가능하며, 벡터 DB나 청킹이 필요 없습니다. PageIndex는 인간 전문가가 트리 검색을 통해 복잡한 문서를 탐색하고 지식을 추출하는 방식을 시뮬레이션하여, LLM이 가장 관련성 높은 문서 섹션으로 생각하고 추론할 수 있게 합니다. 검색은 두 단계로 수행됩니다:
<div align="center"> <a href="https://pageindex.ai/blog/pageindex-intro" target="_blank" title="PageIndex 프레임워크"> <img src="https://docs.pageindex.ai/images/cookbook/vectorless-rag.png" width="70%"> </a> </div>
PageIndex는 인간이 읽는 방식을 반영하여, 벡터 데이터베이스나 청킹 없이 추적 가능하고 설명 가능하며 컨텍스트를 인식하는 검색을 제공하는 벡터리스, 추론 기반 RAG 엔진입니다.
전통적인 벡터 기반 RAG와 비교하여 PageIndex의 특징:
PageIndex는 FinanceBench(금융 문서 QA 벤치마크)에서 최첨단 98.7% 정확도를 달성하여, 전문 문서 분석에서 벡터 RAG 솔루션을 크게 능가했습니다 (블로그 게시물).
자세한 내용은 PageIndex 프레임워크에 대한 자세한 소개를 참조하세요. 오픈 소스 코드는 GitHub에서, 더 많은 사용 가이드와 예제는 cookbooks, tutorials, 블로그를 확인하세요.
PageIndex 서비스는 ChatGPT 스타일의 채팅 플랫폼으로 사용 가능하거나, MCP 또는 API를 통해 통합할 수 있으며, 엔터프라이즈 배포도 가능합니다.
<div align="center"> <a href="https://github.com/VectifyAI/PageIndex/blob/main/examples/agenticvectorlessragdemo.py" target="blank" rel="noopener"> <img src="https://img.shields.io/badge/ViewonGitHub-AgenticVectorlessRAG-blue?style=for-the-badge&logo=github" alt="GitHub에서 보기: 에이전틱 벡터리스 RAG" /> </a> <br/> <a href="https://colab.research.google.com/github/VectifyAI/PageIndex/blob/main/cookbook/pageindexRAGsimple.ipynb" target="blank" rel="noopener"> <img src="https://img.shields.io/badge/OpenInColab-VectorlessRAG-orange?style=for-the-badge&logo=googlecolab" alt="Colab에서 열기: 벡터리스 RAG" /> </a> <a href="https://colab.research.google.com/github/VectifyAI/PageIndex/blob/main/cookbook/visionRAGpageindex.ipynb" target="blank" rel="noopener"> <img src="https://img.shields.io/badge/OpenInColab-VisionRAG-orange?style=for-the-badge&logo=googlecolab" alt="Colab에서 열기: 비전 RAG" /> </a> </div>
PageIndex는 긴 PDF 문서를 의미적 트리 구조로 변환할 수 있으며, 이는 "목차"와 유사하지만 LLM 및 AI 에이전트에 최적화되어 있습니다. 금융 보고서, 법률 문서, 규제 서류, 기술 매뉴얼, 의학 문헌, 학술 교과서 및 모든 긴 복잡한 전문 문서에 이상적입니다.
아래는 PageIndex 트리 구조의 예시입니다. 더 많은 예시 문서 및 생성된 트리 구조도 참조하세요.
{
"title": "Financial Stability",
"node_id": "0006",
"start_index": 21,
"end_index": 22,
"summary": "The Federal Reserve...",
"nodes": [
{
"title": "Monitoring Financial Vulnerabilities",
"node_id": "0007",
"start_index": 22,
"end_index": 28,
"summary": "The Federal Reserve's monitoring..."
},
{
"title": "Domestic and International Cooperation and Coordination",
"node_id": "0008",
"start_index": 28,
"end_index": 31,
"summary": "In 2023, the Federal Reserve collaborated..."
}
]
}...
이 오픈 소스 저장소를 사용하여 PageIndex 트리 구조를 생성할 수 있습니다. 또는 API를 사용하여 향상된 OCR 및 트리 구축 파이프라인을 통해 더 높은 품질의 결과를 얻을 수 있습니다.
참고: 이 패키지는 표준 PDF 파싱을 사용합니다. 복잡한 PDF의 경우, 클라우드 서비스(MCP 및 API를 통해)가 향상된 OCR, 트리 구축 및 검색을 제공합니다.
다음 단계에 따라 PDF 문서에서 PageIndex 트리를 생성할 수 있습니다.
pip3 install --upgrade -r requirements.txt
루트 디렉토리에 .env 파일을 만들고 LLM API 키를 입력하세요. LiteLLM을 통해 멀티 LLM을 지원합니다:
OPENAI_API_KEY=your_openai_key_here
python3 run_pageindex.py --pdf_path /path/to/your/document.pdf
<details> <summary>선택적 매개변수</summary> <br> 추가 선택적 인수를 사용하여 처리를 사용자 정의할 수 있습니다:
--model 사용할 LLM 모델 (기본값: gpt-4o-2024-11-20)
--toc-check-pages 목차 확인할 페이지 수 (기본값: 20)
--max-pages-per-node 노드당 최대 페이지 수 (기본값: 10)
--max-tokens-per-node 노드당 최대 토큰 수 (기본값: 20000)
--if-add-node-id 노드 ID 추가 여부 (yes/no, 기본값: yes)
--if-add-node-summary 노드 요약 추가 여부 (yes/no, 기본값: yes)
--if-add-doc-description 문서 설명 추가 여부 (yes/no, 기본값: yes)
</details>
<details>
<summary>Markdown 지원</summary>
<br>
PageIndex는 Markdown도 지원합니다. --md_path 플래그를 사용하여 마크다운 파일에 대한 트리 구조를 생성할 수 있습니다.
python3 run_pageindex.py --md_path /path/to/your/document.md
참고: 이 모드에서는 "#"을 사용하여 노드 제목과 그 수준을 결정합니다. 예를 들어, "##"은 수준 2, "###"은 수준 3 등입니다. 마크다운 파일이 올바르게 포맷되었는지 확인하세요. 마크다운 파일이 PDF나 HTML에서 변환된 경우, 대부분의 기존 변환 도구가 원래 계층 구조를 보존할 수 없으므로 이 모드를 사용하지 않는 것이 좋습니다. 대신 원래 계층 구조를 보존하도록 설계된 PageIndex OCR을 사용하여 PDF를 마크다운 파일로 변환한 후 사용하세요.