서론
LLM 관련 신규 문서들이 Arxiv를 통해서 많이 발표되고 있고 해당 내용들을 자동화하고 LLM을 통해 요약하는 로직을 만들기 위해서는 Langchain에서 만들어논 라이브러리를 사용하는게 편하다
(arxiv와 pymudpf 패키지를 이용해서 좀 더 이용하기 쉽게 구현)
아래 샘플 소스와 함께 설명하겠습니다.
Langchain을 이용한 Arxiv 문서 가져오기
필요 패키지
- langchain, arxiv, pymupdf
pip install langchain arxiv pymupdf
문서 검색
- query로 검색할 키워드를 입력한다.
- 해당 키워드가 포함된 문서의 arxid id와 제목, 서론, url 정보를 가져와서 json 형태로 return한다.
from langchain.retrievers import ArxivRetriever
def search_arxiv(query,max_results=10):
retriever = ArxivRetriever()
res = {"results": []}
for result in retriever.arxiv_search(query=query,max_results=max_results).results():
tmp = {
"arXiv_id" : result.entry_id.split('abs/')[1][:10],
"title": result.title,
"abstract": result.summary,
"url": result.entry_id}
res["results"].append(tmp)
return json.dumps(res)
search_arxiv('biogpt')

본문 다운로드
- get_relevant_documents의 인자값으로 위에서 쓰인 query를 그대로 사용해도 되지만 해당 메서드는 pdf파일을 다운로드후 해당 내용을 읽어오는 방식으로 동작하기 때문에 문서는 따로 검색하고 필요한 pdf파일만 읽어올 수 있도록 하였다.
그때 검색은 arxiv에서 관리하는 id를 사용하였다.
- doc_content_chars_max를 이용하여 pdf의 내용의 최대 허용치를 설정할 수 있다.
def get_arxiv_content(arxivid,doc_content_chars_max=None):
retriever = ArxivRetriever(load_max_docs=1,doc_content_chars_max=doc_content_chars_max)
docs = retriever.get_relevant_documents(query=arxivid)
if len(docs) > 0:
return docs[0]
else:
return None
paper_contents = get_arxiv_content('2210.10341')

결론
해당 코드를 활용해서 arxiv의 문서를 바로 검색하여 해당 내용을 LLM 모델에 전달하여 요약하거나 번역을 요청하는 서비스를 만들수 있을것으로 보인다. Langchain에는 이밖에도 다양한 Data Loader와 Retriever를 만들어 놓은게 많은데 향후에도 유용한 기능은 정리하여 포스팅하겠습니다.
참고자료
- Langchain Documents : https://python.langchain.com/docs/integrations/retrievers/arxiv
'IT' 카테고리의 다른 글
Freesurfer를 이용한 Brain MRI 영상 처리(feat. mri_synthstrip) (0) | 2023.09.15 |
---|---|
Obsidian - Github 연동 (0) | 2023.09.14 |
Fastapi, Celery를 이용한 LLM Worker 만들기(feat. Redis) (0) | 2023.08.13 |
Langchain으로 LLaMA2 cpp 버전 사용하기 (0) | 2023.07.31 |
LLAMA 2 소개와 데모사용후기 (0) | 2023.07.19 |