Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

archive

[기사 스크랩] Grounding LLMs 본문

ML_AI/AI Tool 정리

[기사 스크랩] Grounding LLMs

안정민 2024. 8. 10. 00:23

Grounding LLMs - Microsoft Community Hub

 

Grounding LLMs

I recently gave a talk at a Microsoft-internal event on everything I learned (so far) about grounding LLMs with Retrieval Augmented Generation and other..

techcommunity.microsoft.com


 

1. 그라운딩이란?

LLM의 본래 학습 데이터에 포함 되지 않은 외부 정보와 연결하는 과정

왜 외부 지식과 연결 ? → LLM을 특정 사례에 적합하도록 하기 위해 (domain specific)

 

이는 특정 도메인에서 LLM이 사용될 때, LLM의 생성 출력의 품질, 정확성 및 관련성을 보장

즉, 우리는 특정 사용 사례의 맥락의 모델을 "Grounding" 해야 한다.

 

 

2. 그라운딩의 동기

Grounding 의 주요 동기 : LLM은 비록 방대한 지식을 가지고 있지만 DB는 아니다 !

 

LLM은 일반적인 추론 및 텍스트 엔진으로 사용되도록 설계

→ 따라서 방대한 정보 코퍼스를 통해 훈련

→ 언어, 세계, 추론, 텍스트 조작에 대한 폭넓은 이해를 제공

 

LLM의 한계

→ 특정 시점까지 훈련되어 지속적으로 업데이트 X, 따라서 지식이 구식일 수밖에 없음

→ LLM은 공공 정보에만 접근 가능, 기업 방화벽 뒤의 특정 정보에 대한 지식이 부족

따라서 우리는 LLM의 일반적인 능력을 특정 정보와 결합할 방법이 필요하다

 

 

3. RAG

3-1) RAG 개념

RAG는 주어진 과제에 대한 정보를 검색하고, 이를 언어 모델과 함께 제공하여 모델이 응답할 때 이 특정 정보를 활용하도록 하는 과정

 

이전의 파인튜닝 기법은 정확성 측면에서 일반적으로 1-2%의 향상을 가지고 온다는 것이 일반적인 의견

그렇게 크지 않음

따라서 파인 튜닝은 최적화를 위한 최후의 수단으로 간주해야 하며, 초기 기법으로 사용하지 않아야 !

 

정보 검색 증강 생성 (RAG)의 사용사례

1. 질문-응답 시스템 (QnA System)

: Bing 채팅과 상호작용 시 검색 결과를 투명하게 검색하여 응답을 그라운딩

2. 사용자 인터페이스에서 정보를 추출해서 콘텐츠 생성

: Copilot, LLM을 사용하여 작업 중인 문서를 기반으로 문맥 인식 제안을 제공

3. API나 외부 소스에서 정보 검색

4. 다단계 생성 과정이나 메모리 및 상태 관리 (context 유지)

 

 

4. 간단한 RAG 모델

 

기본 정보 RAG 모델은 사용자 쿼리나 지시와 같은 트리거로 시작

→ 이 트리거는 쿼리 기반으로 콘텐츠를 검색하는 검색 기능으로 전송

→ 검색된 콘텐츠는 입력 프롬프트 및 쿼리 자체와 함께 LLM의 context window로 병합

→ LLM은 결합된 입력 및 검색된 콘텐츠를 기반으로 출력을 생성

 

 

 

5. 시맨틱 검색 Sementic Search

 

시맨틱 검색은 RAG을 위한 주요 기법 중 하나

문서 또는 문서의 조각을 임베딩을 사용한 시맨틱 표현에 기반하여 인덱싱하는 것

 

검색 시 쿼리의 시맨틱 표현에서 가장 관련성 있는 문서를 찾기 위해 유사성 검색이 수행

→ 임베딩 모델, 벡터 인덱스 및 유사성 검색에 의존

 

임베딩은 언어 모델에 의해 생성된 "의미"의 다차원 숫자 표현

즉, 텍스트 입력이 주어지면 출력은 수백~ 수천 개의 숫자로 구성된 벡터이다

 

 

6. 벡터 인덱스와 데이터베이스

 

벡터인덱스와 데이터베이스는 NLP 분야에서 필수적인 도구

문서를 저장하고 벡터 표현 또는 임베딩을 사용하여 인덱싱하여, 효율적인 유사성 검색과 문서 검색을 가능하게 함

ex) Pinecone, Weaviate, QDrant, Milvus, Chroma

 

기존 여러 제품들도 벡터 인덱스 지원을 추가함

ElasticSearch 대규모 클러스터, Redis 등과 같은 데이터베이스도 벡터인덱싱 지원 시작

 

 

7. 간단한 벡터 인덱싱 및 검색 모델

사전 처리 단계에서는 문서를 청크나 조각으로 나눔

why? ) 더 구체적인 정보를 인덱싱하고 언어 모델의 제한된 컨텍스트 윈도우에 맞추기 위해

각 청크에 대해 임베딩을 계산하고 청크와 해당 임베딩을 벡터 인덱스에 저장

 

실행시간 동안 쿼리나 지시를 받고 임베딩 계산

벡터 데이터베이스를 사용하여 쿼리에 시맨틱적으로 가까운 문서를 찾기 위한 유사성 검색을 실행

문서를 컨텍스트 윈도우의 한계를 고려하여 순위를 매기고 큐레이팅 하면서 언어 모델로 보낼 프롬프트를 구축

 

 

8. 벡터 인덱싱 및 검색 기술

8-1) 청크 나누기

1. 청크 크기

LLM에서 검색 정보의 품질은 문서 전처리 및 청크 나누기 전략에 크게 영향

최적의 청크 크기 → 작고 구체적인 청크+ 크고 포괄적인 청크 간의 균형

 

2. 청크 형식

인덱싱할 텍스트에서 마크업을 제거할 지 메타데이터를 포함할 지

특정 사용 사례에 가장 적합한 방법을 결정하려면 실험이 필요

 

8-2) 검색 체계 고려

1. 일반적인 접근 방식 :

→  쿼리에 대한 유사성을 기준으로 문서를 순위화

→  가능한 한 많은 문서를 컨텍스트 창에 채움 

그러나 이 전략은 항상 최선의 방법이 아닐 수 있음, 덜 관련성이 있는 문서를 포함하면 결과에 부정적인 영향을 미칠 수 있기 때문

 

유사성의 컷오프 포인트를 설정하여 관련 정보만 포함되도록 해야 한다. 

 

 

8-3) 벡터인덱싱 / 검색도구

1. Langchain :  

대규모 언어 모델(LLM)을 기반으로 애플리케이션을 구축하기 위한 오픈 소스 프레임워크

모델이 생성하는 정보의 맞춤화, 정확성 및 관련성을 개선하기 위한 도구와 추상화 기능을 제공

 

2. LlamaIndex:

벡터 인덱스 검색을 위해 특별히 설계된 Python 라이브러리

 

 

9. 벡터 인덱싱 / 검색 도구

1. 검색된 청크가 의미론적으로 관련이 있을 수 있지만 결합 시 별로 의미가 없는 경우

: 해당 문제는 구체적인 정보보다는 광범위한 질문을 처리할 때 더 발생할 가능성이 높음

 

2. 고유한 정보가 임베딩 생성 시 어려움을 주는 경우

: LLM은 모든 토큰에 대해 임베딩을 생성할 수 있음

: 그러나 모델이 토큰의 중요성을 이해하지 못 하면 결과 임베딩이 의미가 부족할 수 있음  

 

3. 검색된 청크를 구분하고 순위화하는 것

: 종종 유사성이 대략 비슷한 많은 청크가 발생하여 어떤 것을 포함할 지 결정하기가 어려울수 있음

: 더 정교한 접근 방식이 필요

 

4. 컨텍스트 윈도우의 크기가 제한된 경우

: 많은 양의 정보를 포함하기 어려울 수 있음

: 벡터 인덱싱 및 검색 시스템의 효과성에 영향을 많이 미침

 

 

10. 메타데이터를 활용한 검색

메타데이터는 검색 결과를 세분화하는 강력한 도구가 될 수 있음

임베딩과 달리 약간의 추측이 포함되어있음

검색 프로세스에 통합하면 유사성검색을 제한하거나 순위를높여 더욱 정확하고 높은 결과를 얻을 수 있음

→ 날짜: 최신 문서를 우선시하거나 특정 기간의 문서에 초점

→ 태그 / 카테고리: 관련 태그 또는 카테고리를 기준으로 결과를 제한하거나 우선시

→ 출처 / 저자: 특정 출처 또는 저자의 결과에 초점을 맞추어 관련성을 보장