자체 RAG 구축 - Amazon Nova

자체 RAG 구축

자체 검색 증강 생성(RAG) 시스템을 구축할 때는 리트리버 시스템과 제너레이터 시스템을 활용할 수 있습니다. 리트리버는 유사성 점수를 기반으로 벡터 데이터베이스에서 관련 청크를 식별하는 임베딩 모델일 수 있습니다. 제너레이터는 모델의 기능을 활용하여 검색된 결과(청크라고도 함)를 기반으로 질문에 답변하는 대규모 언어 모델(LLM)일 수 있습니다. 다음 섹션에서는 RAG 시스템의 프롬프트를 최적화하는 방법에 대한 추가 팁을 제공합니다.

시스템 프롬프트 활용

다른 기능과 마찬가지로 시스템 프롬프트를 개선하는 것이 유용할 수 있습니다. 시스템 프롬프트에서 RAG 시스템 설명을 정의하여 모델에 대해 원하는 페르소나와 동작을 간략하게 설명할 수 있습니다.

모델 지침 사용

시스템 프롬프트에 전용 "Model Instructions:" 섹션을 포함시켜 모델이 따라야 할 구체적인 가이드라인을 제공할 수 있습니다. 예를 들어 다음과 같은 지침을 나열할 수 있습니다.

In this example session, the model has access to search results and a user's question, its job is to answer the user's question using only information from the search results.

Model Instructions: - You should provide concise answer to simple questions when the answer is directly contained in search results, but when comes to yes/no question, provide some details. - In case the question requires multi-hop reasoning, you should find relevant information from search results and summarize the answer based on relevant information with logical reasoning. - If the search results do not contain information that can answer the question, please state that you could not find an exact answer to the question, and if search results are completely irrelevant, say that you could not find an exact answer, then summarize search results. - Remember to add citations to your response using markers like %[1]%, %[2]%, %[3]%, etc for the corresponding passage supports the response.
지침을 제한하여 할루시네이션 방지

‘검색 결과에 없는 정보를 사용하지 마세요!‘를 모범 지침으로 명확하게 언급하여 지침에 더욱 집중할 수 있도록 하여 제공된 컨텍스트에 근거한 답을 제시합니다.

- DO NOT USE INFORMATION THAT IS NOT IN SEARCH RESULTS!
입력 쿼리에 이어 검색 결과 제공

입력 쿼리에 이어 리트리버 검색 결과 또는 컨텍스트 청크를 제공합니다. 이 모델은 Resource: Search Results: 다음에 청크 결과가 제공될 때 가장 잘 작동합니다.

{query} Resource: Search Results: {rag_chunks_retreiver_results}
인용

인용은 질문에 답변하기 위해 제공된 컨텍스트에 대한 유용한 참조 역할을 합니다. 인용은 일반적으로 LLM 답변의 근거를 제공하는 데 주로 사용됩니다. 인용은 평가 도구로 사용되므로 사용자는 컨텍스트에서 인용된 소스를 다시 참조하여 답변이 제공된 정보에 대해 충실한지를 평가할 수 있습니다.

이는 모델이 답변에서 인용을 생성하는 데 집중할 수 있도록 시스템 프롬프트의 '모델 지침'에 추가해야 하는 샘플 프롬프트입니다.

- Make sure to always add citations to your response using markers like %[1]%, %[2]%, %[3]%, and for the corresponding passage that supports the response.

이전 권장 사항을 모두 다음 프롬프트 템플릿과 결합할 수 있습니다. 이 템플릿은 검색된 청크를 기반으로만 생성됩니다.

Role Prompt

시스템

이 세션에서 모델은 검색 결과와 사용자의 질문에 액세스할 수 있으며, 작업은 검색 결과의 정보만 사용하여 사용자의 질문에 답변하는 것입니다.

모델 지침:

  • 답변이 검색 결과에 직접 포함되어 있는 경우 간단한 질문에 간결한 답변을 제공해야 하지만, 예/아니요 질문의 경우 몇 가지 세부 정보를 제공해야 합니다.

  • 질문에 멀티 홉 추론이 필요한 경우 검색 결과에서 관련 정보를 찾고 논리적 추론을 통해 관련 정보를 기반으로 답변을 요약해야 합니다.

  • 질문에 답변할 수 있는 정보가 검색 결과에 포함되어 있지 않은 경우 질문에 대한 정확한 답변을 찾을 수 없다는 점을 명시하고, 검색 결과와 전혀 관련이 없는 경우 정확한 답변을 찾을 수 없다는 점을 명시하고 검색 결과를 요약합니다.

  • 해당 구절에서 응답을 지원하는 %[1]%, %[2]%, %[3]% 등의 마커를 사용하여 응답 끝에 인용을 추가해야 합니다.

  • 검색 결과에 없는 정보를 사용하지 마세요!

User

{Query}

리소스: 검색 결과: {search_results}

멀티모달 RAG

멀티모달 RAG를 생성할 때 준수해야 할 몇 가지 추가 모범 사례가 있습니다.

  • 텍스트가 많지 않은 이미지(자연 장면, 텍스트가 적은 슬라이드, 인포그래픽 등)의 경우 직접 이미지를 사용합니다. Amazon Nova는 텍스트가 많지 않은 이미지를 처리하도록 최적화되었습니다. 근거가 있는 생성에서 이러한 이미지에 대한 추가 텍스트 요약을 전달할 필요가 없습니다.

  • 텍스트 요약(예: PDF 보고서, 논문)을 사용하여 텍스트가 많은 이미지를 개선합니다. 텍스트가 많은 PDF의 경우 가장 좋은 방법은 이미지(PDF)와 해당 텍스트 요약을 모두 검색하는 것입니다. 텍스트 요약은 모델이 원본 이미지의 대량 텍스트에서 관련 정보를 식별하는 데 도움이 될 수 있습니다.

  • 이미지를 전달하고 있음을 모델에 알립니다. 지침에서 ‘You will be provided with images and texts from search results‘와 같은 문장을 추가할 수 있습니다.