ChatGPT
-
[논문리뷰] Retrieval Augmented Generation for Knowledge Intensive NLP Tasks(2020)카테고리 없음 2024. 3. 27. 13:33
# 요약 Large pre-trained model은 사실적 지식을 매개변수에 저장하고, 다운스트림 NLP 작업에서 미세 조정할 때 SOTA의 성능을 냄. 그러나 지식에 접근하고 정확하게 다루는데는 여전히 한계가 있음. 또한 결과에 대한 출처를 제공하고 지식을 업데이트하는 것도 한계가 있음. 본 논문에서는 Language model의 parametric memory에 non-parametric memory를 결합한 RAG(Retrival-augmented generation)을 제안함. Parametric memory는 pre-trained seq2seq 모델을 사용하고, non-parametric memory로 pre-trained neural retriever로 위키피디아의 dense vector를 ..
-
[LlamaIndex] Building RAG Applications for Production카테고리 없음 2024. 2. 6. 22:45
RAG 애플리케이션의 프로토타입을 만드는 것은 쉽지만 성능이 뛰어나고 강력하며 대규모 지식 자료로 확장 가능하도록 만드는 것은 어렵습니다. 이 가이드에는 RAG 파이프라인의 성능을 향상시키기 위한 다양한 팁과 요령이 포함되어 있습니다. 먼저 몇 가지 일반적인 기술의 개요와 구현방법을 설명합니다. 가장 간단한 기술부터 가장 어려운 기술까지 있습니다. 최종 목표는 검색 및 생성 성능을 최적화하여 더 복잡한 데이터 세트에 대한 더 많은 쿼리에 환각 없이 정확하고 답변하는 것입니다. ○ 검색된 Chunk와 응답 합성에 사용되는 Chunk 분리하여 생각하기 더 나은 검색을 위한 핵심 기술은 검색에 사용되는 Chunk를 합성에 사용되는 Chunk와 분리하는 것입니다 # 문서와 관련된 청크로 연결되는 문서 요약 삽입..
-
[LlamaIndex] Advanced Retrieval Strategies카테고리 없음 2024. 2. 5. 13:04
지금까지 LlamaIndex로 RAG를 구현하는 방법들을 알아봤습니다. 이번에는 고급 RAG 구현하는 몇가지 방법을 알아보겠습니다. ○ Query Transformation 사용자 쿼리는 RAG 쿼리 엔진, 에이전트 또는 기타 파이프라인의 일부로 실행되기 전에 여러 가지 방법으로 변환 및 분해될 수 있습니다. 1. Routing: 쿼리는 유지하되, 쿼리가 적용되는 Tool을 선택합니다. 2. Query-Rewriting: 다양한 방법으로 쿼리를 다시 작성합니다. 3. Sub-Questions: 쿼리를 여러 개의 하위 질문으로 분해합니다. 4. ReAct Agent Tool Picking: 초기 쿼리가 주어지면 1) 선택할 Tool과 2) 해당 Tool에서 실행할 쿼리를 식별합니다. # Routing 이 ..
-
[논문리뷰] LLaMA: Open and Efficient Foundation Language Models(2023)카테고리 없음 2024. 2. 1. 22:25
# 요약 7B에서 65B 매개변수를 포함하는 LM인 LLaMA를 제안. 공개적으로 사용 가능한 데이터셋만을 활용하고, 초 대규모로 모델 사이즈를 키우지 않고도 좋은 성능을 낼 수 있음을 입증함. # 서론 - 최근의 연구는 LM의 크기와 성능이 선형적 관계라는 가정으로 LM의 크기를 키우는 방향으로 연구되고 있음 - 그러나 Hoffmann 등(2022)의 최근 연구에 따르면, 주어진 컴퓨팅 리소스 내에서 최고의 성능은 가장 큰 모델이 아니라 더 많은 데이터로 훈련된 더 작은 모델임 - 모델의 추론과 서빙을 고려할때 우리는 적정한 크기의 성능 좋은 LM이 필요함 - 본 논문에서는 더 많은 토큰을 학습시켜 최고의 성능을 달성하는 적정한 크기의 LM을 추구함 - 이렇게 생성된 LLaMa는 7B ~ 65B 파라미..
-
[LlamaIndex] Evaluating카테고리 없음 2024. 1. 30. 12:29
평가와 벤치마킹은 LLM 개발에서 중요한 개념입니다. LLM 앱(RAG, 에이전트)의 성능을 향상하려면 이를 측정할 수 있는 방법이 있어야 합니다. LlamaIndex는 생성된 결과의 품질을 측정하는 주요 모듈을 제공합니다. 또한 검색 품질을 측정하기 위한 주요 모듈도 제공합니다. ○ Response Evaluation(응답 평가) LlamaIndex는 결과의 품질을 측정하기 위해 LLM 기반 평가 모듈을 제공합니다. 이는 "골드" LLM(예: GPT-4)을 사용하여 예측된 답변이 다양한 방식으로 올바른지 여부를 결정합니다. 이러한 현재 평가 모듈 중 다수에는 실측 라벨이 필요 하지 않습니다. 쿼리, 컨텍스트, 응답의 일부 조합을 통해 평가를 수행하고 이를 LLM 호출과 결합할 수 있습니다. 평가 모듈은..
-
[LlamaIndex] Querying카테고리 없음 2024. 1. 29. 12:21
이제 데이터를 로드하고, 인덱스를 작성하고, 나중에 사용할 수 있도록 해당 인덱스를 저장했습니다. LLM 응용 프로그램의 가장 중요한 부분인 쿼리를 시작할 준비가 되었습니다. 쿼리는 간단히 말하면 LLM에 대한 프롬프트 호출입니다. 쿼리는 질문을 하고 답변을 얻을 수도 있고, 요약 요청이 될 수도 있고, 훨씬 더 복잡한 지침이 될 수도 있습니다. ○ 기본 사용법 쿼리의 기본은 QueryEngine 입니다. QueryEngine을 얻는 가장 간단한 방법은 다음과 같이 색인을 생성하여 색인을 얻는 것입니다. query_engine = index.as_query_engine() response = query_engine.query( "Write an email to the user given their bac..
-
[논문리뷰] Training language models to follow instructionswith human feedback(2022, InstructGPT)카테고리 없음 2024. 1. 24. 22:08
# 요약 - Language Model의 크기를 증가시키는 것이 반드시 사람의 의도를 잘 파악하지는 않음 - LM을 다양한 Task에서 사용자의 의도에 맞게 Fine-tuning 하는 방법을 제시 - GPT-3 보다 100배 작은 매개변수를 가진 InstructGPT는 GPT-3 보다 더 사람의 의도에 맞는 출력을 생성함 # 도입 - LM은 Few-shot 프롬프팅을 통해 다양한 NLP Task 적용이 가능 - 그러나 사실을 지어내거나, 사용자 지침을 잘 따르지 않는 등 의도하지 않은 출력이 발생함 - 원인은 LM에 사용되는 목표, 다음 토큰을 예측하는 목표가 "사용자의 지시를 유용하게 따르기"라는 목표와 다르기 때문 - 본 논문에서는 사람의 피드백을 통한 강화 학습(RLHF)을 사용하여 다양한 지침을 ..
-
[LlamaIndex] Storing카테고리 없음 2024. 1. 22. 16:24
데이터를 로드하고 Indexing한 후에는 다시 Indexing하는 데 드는 시간과 비용을 피하기 위해 해당 데이터를 저장하는 것이 좋습니다. 기본적으로 Indexing된 데이터는 메모리에만 저장됩니다. ○ 특정 경로에 저장 아래 코드는 지정된 경로에 Indexing 데이터를 저장하고 다시 불러오는 예시 입니다. from llama_index import StorageContext, load_index_from_storage # Indexing된 데이터를 특정 경로에 저장 storage_context.persist(persist_dir="") # rebuild storage context storage_context = StorageContext.from_defaults(persist_dir="") # ..