

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# LLMs 및 RAG 이해
<a name="understanding"></a>

소스 문서 품질을 개선하여 RAG 응답의 품질을 개선하는 방법을 이해하려면 LLM의 내부 작업을 이해해야 합니다. LLMs의 진정한 성능은 자체 주의 메커니즘과 변환기 아키텍처를 사용하는 능력에 있습니다. 이러한 고급 기술을 통해 모델은 텍스트 내 위치 또는 거리에 관계없이 입력 시퀀스의 다양한 부분을 효과적으로 처리하고 연결할 수 있습니다. 이 기능은 종종 장기 종속성과 컨텍스트 이해로 어려움을 겪는 기존 언어 모델과 극명한 대조를 이룹니다. 또한 LLMs은 전례 없는 규모로 훈련됩니다. 가장 큰 모델 중 일부는 수조 개의 파라미터로 구성되며 다양한 소스에서 수 테라바이트의 텍스트 데이터를 수집했습니다. 이 대규모 규모를 통해 LLMs 언어에 대한 풍부한 이해를 발전시켜 이전에 AI 시스템에 어려운 미묘한 미묘한 뉘앙스, 관용구 및 컨텍스트 신호를 포착할 수 있습니다. 그 결과 일관성 있고 유창한 텍스트를 생성하고 질문 답변, 텍스트 요약, 심지어 코드 생성과 같은 작업에서 주목할 만한 기능을 보여줄 수 있는 모델 클래스가 됩니다.

이러한 모델을 사용하기 위해 [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)과 같은 서비스를 사용할 수 있습니다.이 서비스는 Amazon 및 Anthropic, Cohere, Meta를 포함한 타사 공급자의 다양한 파운데이션 모델에 대한 액세스를 제공합니다. Amazon Bedrock을 사용하여 state-of-the-art 모델을 실험하거나, 모델을 사용자 지정 및 미세 조정하거나, 단일 API를 통해 생성형 AI 기반 솔루션에 통합할 수 있습니다.

LLMs 패턴을 캡처하고 일관성 있는 텍스트를 생성하는 데 뛰어나지만 up-to-date 또는 특수 정보에 대한 액세스 권한이 없는 경우가 많습니다. RAG는 LLMs 프롬프트의 일부로 외부 소스의 관련 정보에 액세스하고 통합할 수 있는 검색 구성 요소와 결합합니다. 외부 소스의 예로는 Amazon Bedrock용 [지식 기반](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html), Amazon [Kendra](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html)와 같은 지능형 검색 시스템 또는 [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html)와 같은 벡터 데이터베이스가 있습니다.

![RAG 기반 애플리케이션이 사용자의 쿼리에 응답하는 방법의 워크플로입니다.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/writing-best-practices-rag/images/rag-workflow.png)


다이어그램은 다음 워크플로를 설명합니다.

1. 사용자가 RAG 애플리케이션에 쿼리를 제출합니다.

1. RAG 애플리케이션은 문서, 데이터 또는 미디어와 같은 지식 소스가 포함된 벡터 데이터베이스를 쿼리합니다.

1. RAG 애플리케이션은 쿼리와 저장된 문서 간의 의미론적 유사성을 기반으로 벡터 데이터베이스에서 관련 정보를 검색합니다.

1. RAG 애플리케이션은 검색된 컨텍스트로 원본 프롬프트를 보강하여 LLM 엔드포인트로 전송합니다.

1. LLM 엔드포인트는 응답을 생성하여 RAG 애플리케이션에 반환합니다.

1. RAG 애플리케이션은 생성된 응답을 사용자에게 반환합니다.

RAG는 핵심에서 2단계 프로세스를 사용합니다. 첫 번째 단계에서 검색 모델은 입력 쿼리를 기반으로 관련 문서 또는 구절을 식별하고 검색합니다. 이 검색 모델은 기존 정보 검색 시스템, 밀집 검색 모델 또는 둘의 조합일 수 있습니다. 두 번째 단계에서는 검색된 정보와 원본 쿼리가 완전히 구체화된 프롬프트 템플릿으로 LLM에 공급됩니다. LLMs 리트리버 구성 요소가 제공하는 소스 콘텐츠의 품질에 크게 의존합니다. 자체 주의 메커니즘을 적용하여 검색된 콘텐츠가 작업과 어떤 관련이 있는지 수학적으로 인코딩합니다. 그런 다음 LLM은 쿼리와 검색된 정보를 모두 기반으로 응답을 생성합니다. RAG에서 검색된 소스 문서의 품질을 제어하는 것은 작업에 대한 LLM의 내부 표현을 개선하는 직접적인 수단을 나타냅니다. RAG는 관련 외부 데이터로 LLM의 훈련 데이터를 효과적으로 보강합니다. 이 접근 방식을 통해 RAG는 LLMs과 검색 시스템의 장점을 모두 활용하여 현재 및 전문 지식을 통합하는 보다 정확하고 정보에 입각한 응답을 생성할 수 있습니다.

## 벡터 및 임베딩
<a name="understanding-vectors-embeddings"></a>

벡터 및 임베딩은 기계 학습 및 자연어 처리의 기본 개념입니다. *벡터*는 크기와 방향이 모두 있는 수량을 나타내는 수학적 객체입니다. 자연어 처리(NLP)의 맥락에서 단어, 문장 또는 문서는 고차원 벡터 공간에서 벡터로 표현되는 경우가 많습니다. 반면 *임베딩*은 벡터 간의 관계가 의미 또는 구문 유사성을 캡처하는 저차원 벡터 공간에서 단어 또는 문서와 같은 객체를 나타내는 방법입니다. 예를 들어 단어 임베딩은 유사한 의미의 단어가 유사한 벡터 표현을 갖도록 허용합니다. 이를 통해 알고리즘은 언어를 더 효과적으로 이해하고 처리할 수 있습니다.

## 벡터 데이터베이스
<a name="understanding-vector-databases"></a>

생성형 AI에서 *벡터 데이터베이스*는 문서, 쿼리 또는 기타 객체의 벡터 표현을 저장하고 관리하는 데이터베이스입니다. 벡터를 효율적으로 저장하고 검색하도록 설계되었습니다. 이는 의미 검색 및 유사성 일치와 같은 빠르고 확장 가능한 작업을 지원합니다. 벡터 데이터베이스는 계층적 탐색 가능 스몰 월드(HNSW) 그래프 또는 K-Nearest Neighbors(KNN) 알고리즘과 같은 특수 데이터 구조를 사용하여 벡터를 인덱싱합니다. 이러한 데이터 구조를 사용하면 가장 가까운 이웃을 빠르게 검색할 수 있으므로 데이터베이스에서 유사한 벡터를 빠르게 찾을 수 있습니다.

## 시맨틱 검색
<a name="understanding-semantic-search"></a>

*의미 체계 검색*은 키워드를 일치시키는 대신 쿼리의 의도와 컨텍스트를 이해하여 검색 결과의 관련성을 개선하는 기법입니다. 기술적으로 의미 체계 검색에는 쿼리의 벡터 표현과 데이터베이스의 문서를 비교하여 가장 관련성이 높은 일치 항목을 찾는 작업이 포함됩니다. 의미 체계 검색에는 다음을 포함하되 이에 국한되지 않는 다양한 검색 전략을 사용할 수 있습니다.
+ **HNSW** - 가장 가까운 이웃을 효율적으로 검색할 수 있는 방식으로 벡터를 구성하는 그래프 기반 데이터 구조입니다.
+ **KNN** - 코사인 유사성과 같은 거리 지표를 기반으로 쿼리 벡터에 가장 가까운 K 벡터를 찾는 알고리즘입니다.
+ **코사인 유사성** - 두 벡터 간의 각도 코사인을 측정하는 0이 아닌 두 벡터 간의 유사성 척도입니다. 시맨틱 검색에서 고차원 공간에서 벡터의 방향을 비교하는 데 자주 사용됩니다.
+ **로컬리티 구분 해싱(LSH) -** 확률이 높은 동일하거나 가까운 버킷에 유사한 벡터를 해시하는 기법입니다. 이렇게 하면 대략적인 가장 가까운 이웃 검색이 가능하므로 고차원 공간의 정확한 검색보다 빠를 수 있습니다.