프로젝트 소개

PaperQA2는 과학 문헌 및 기타 문서 유형에 대해 높은 정확도의 검색 증강 생성(RAG)을 위해 설계된 오픈소스 Python 패키지 및 CLI 도구입니다. PDF, 일반 텍스트, Markdown, HTML, Microsoft Office 파일(docx, xlsx, pptx) 및 소스 코드 파일을 수집한 후, 특정 페이지와 구절을 가리키는 근거 기반의 인라인 인용과 함께 사용자 질문에 답변합니다. 이 시스템은 3단계 에이전트 워크플로를 따릅니다: (1) 논문 검색(Paper Search) - LLM이 키워드 쿼리를 생성하여 후보 논문을 찾고, 이를 로컬 전체 텍스트 검색 인덱스로 청크화합니다; (2) 증거 수집(Gather Evidence) - 쿼리를 임베딩하고, 상위 k개 청크를 순위화하며, 각 청크를 컨텍스트에 맞게 요약하고, LLM이 가장 관련성 높은 요약을 재점수화하여 선택합니다; (3) 답변 생성(Generate Answer) - 최상의 요약을 프롬프트에 넣고 답변을 생성합니다. 언어 에이전트는 이러한 도구를 어떤 순서로든 호출할 수 있어 쿼리와 답변을 반복적으로 개선할 수 있습니다. 주요 기능으로는 Semantic Scholar, Crossref, Unpaywall에서의 자동 메타데이터 가져오기(인용 횟수 및 철회 확인 포함), 문서 메타데이터 인식 임베딩, LLM 기반 재순위화 및 컨텍스트 요약(RCS), 그리고 강력한 사용자 지정 인터페이스가 있습니다. 기본 스택은 OpenAI 임베딩과 모델, Numpy 벡터 데이터베이스를 사용하지만, PaperQA2는 LiteLLM과 통합되어 Claude, Gemini 및 llama.cpp를 통한 로컬 호스팅 모델을 포함한 사실상 모든 LLM 제공자를 지원합니다. Sentence Transformers를 통한 로컬 임베딩 모델도 지원됩니다. CLI 도구 `pqa`는 빠른 시작 사용법을 제공합니다: 논문 디렉토리로 이동하여 `pqa ask 'What is PaperQA2?'`를 실행하면 인덱싱, 검색, 답변이 한 단계로 수행됩니다. 번들 설정(high_quality, fast, wikicrow, contracrow, debug, tier1_limits)은 모순 감지 및 Wikipedia 스타일 기사 작성과 같은 다양한 사용 사례에 맞게 사전 조정된 구성을 제공합니다. 속도 제한은 API 계층 제한을 수용하기 위해 모델별로 구성 가능합니다. Python 라이브러리는 동기 및 비동기 API를 모두 제공합니다. `ask` 함수는 편의 래퍼를 제공하며, `agent_query` 및 직접 `Docs` 객체 조작은 문서 수집 및 쿼리에 대한 세밀한 제어를 허용합니다. `Docs` 객체는 파일, URL 및 코드 추가를 지원하며, 증거 검색 및 쿼리 메서드를 제공합니다. 모든 이전 답변은 인덱싱되어 나중에 검색할 수 있도록 저장됩니다. 최근 업데이트(2025년 12월)는 표, 그림, 비영어 언어 및 수학 방정식에 대한 멀티모달 지원을 추가했습니다; 새로운 모델 기반 PDF 리더(Docling 및 Nvidia nemotron-parse); Microsoft Office 문서 파싱; 미디어 객체가 요약 LLM에 전달되는 멀티모달 컨텍스트 요약; 그리고 httpx를 사용한 단순화된 HTTP 스택. 프로젝트는 2025년 12월에 시맨틱 버전 관리에서 캘린더 버전 관리로 전환했습니다. PaperQA2는 Apache 2.0 라이선스로 제공되며 Python 3.11+가 필요합니다. Semantic Scholar, Crossref, Unpaywall, Pydantic, tantivy, LiteLLM 및 pybtex를 포함한 라이브러리에 의존합니다. 이 프로젝트는 Future House에서 개발했으며, 과학적 질문 응답, 요약 및 모순 감지 작업에서 초인간적 성능을 입증하는 동료 검토 연구로 발표되었습니다.