AWS 기술 블로그
생성형 AI로 혁신하는 법률 서비스: Amazon Bedrock으로 구현한 법무법인대륜의 서면 작성 AI 시스템
주식회사 대륜은 대륜법무그룹의 일원으로, ‘고객이 가장 쉽고 편리하게 찾을 수 있는 로펌이자 가장 명쾌한 솔루션을 제시하는 세계적인 로펌’을 목표로 단기간에 법무법인 대륜을 국내 10대 대형 로펌으로 성장시킨 기업입니다. 대륜은 각 분야 전문 변호사들과 함께 고객의 상황에 맞는 최고의 법률 서비스를 제공하고 있으며, 어렵고 낯설게 느껴질 수 있는 법률 서비스를 더욱 편리하게 이용할 수 있도록 리걸테크 (Legaltech) 솔루션을 제공하는 데에도 집중하여 현재까지 판례 검색 기능이나 변호사 추천 기능 등을 개발해왔습니다.
대륜 서면 작성 AI
는 고소장·항소장·답변서 등과 같이 전문적 법률지식을 요구하는 여러 종류의 법률서류를 생성형 AI를 이용해 손쉽게 작성하도록 도와주는 솔루션입니다. 법 관련 지식이 많지 않은 일반 사용자 입장에서는, 법적 소송을 준비할 때 본인의 상황에 대한 법리적인 해석을 작성하고 특정 법률서류의 형식에 맞게 문서를 완성하는 과정이 어렵게 느껴질 수 있습니다. 서면 작성 AI는 사용자가 본인의 사건에 대한 전반적인 내용을 입력으로 넣으면, Amazon Bedrock을 통해 생성형 AI가 사건에 대한 법리적 해석을 작성하고 관련 판례를 함께 제공함으로써, 법률 전문가가 아니더라도 누구나 손쉽게 복잡한 법률 서류를 편리하게 작성할 수 있도록 합니다. 아래 그림은 서면 작성 AI 챗봇의 UI로, 서면 파일 생성과 관련 판례 검색 두 가지 기능의 구현 결과를 보여주고 있습니다.
이 블로그에서는 서면 작성 AI가 어떻게 고객의 법률 경험을 개선하는지, Amazon Bedrock과 AWS Step Functions와 같은 AWS 서비스를 활용해 이 솔루션을 구현한 이유와 그 상세한 구현 과정을 공유합니다.
서면 작성 AI를 개발하게 된 이유
법률 서면이란, 소송이나 재판 과정에서 진술하고자 하는 사항을 기재하여 법원에 제출하는 문서를 말합니다. 서면의 종류로는 고소장부터 항소장, 답변서와 같이 전문적인 법 지식을 요구하는 문서가 많기에 일반인의 입장에서는 작성하기가 어렵게 느껴질 수 있습니다. 이에 법률 서비스를 이용하고자 하는 고객은 문서 하나를 작성하기 위해 찾아봐야 할 정보가 너무 많고, 이 때문에 전문 변호사에게 서면 작성을 의뢰하는 경우도 많지만 이 경우에도 하나의 서류를 완성하는 데에 적지 않은 비용과 시간을 지불하게 됩니다. 변호사들 역시 다량의 서면 작성 의뢰가 이어지면 업무가 과중되어 신속한 법률 서비스의 제공이 힘들어지게 될 수 있습니다.
이러한 상황에 도움이 되기 위해, 대륜 개발팀은 생성형 AI를 이용해 법률 서면의 초안을 자동으로 작성해주는 솔루션을 개발하게 되었습니다. 사용자는 서면 작성 AI 챗봇 화면에 접속해 본인의 사건에 대한 기본적인 설명을 입력하고 원하는 서류 양식을 선택하기만 하면, 생성형 AI가 서류 양식에 맞추어 청구 취지, 청구 원인과 같은 법리적 내용을 작성해 서면의 초안을 완성합니다. 사용자는 AI가 작성한 초안을 다운로드하여 직접 내용을 추가하거나, 추가 정보를 채팅에 제공하고 서류의 보완을 요청할 수 있습니다.
또한 고객들이 과거에 있었던 비슷한 사건에 대한 판결 결과를 자주 질문한다는 점에서 착안하여, 고객의 사건 내용을 분석한 뒤 RAG (Retrieval-Augmented Generation) 기술을 이용해 대륜이 보유하고 있는 대량의 법률 데이터 중 고객의 사례와 유사한 과거 판례를 검색하고 채팅으로 함께 제공할 수 있도록 했습니다. 이로써, 해당 솔루션은 일반인 사용자들에게는 법률 서비스에 대한 접근성과 이해도를 높이고 관련 서류를 보다 손쉽게 완성하도록 돕는 것은 물론, 법조계 종사자들 역시 업무 효율성을 증진시킬 수 있도록 돕는 것을 목표로 합니다.
*유튜브 재생이 안 되실 경우 다음 링크에서 확인해주세요: https://youtu.be/aiHjiOJVSU0
솔루션 개요
대륜 서면 작성 AI는 Amazon Bedrock을 기반으로, Anthropic Claude 3.5 Sonnet v2 모델을 사용하여 구현되었으며, 아래 그림과 같이 총 3개의 주요한 흐름으로 구성되어 있습니다.
Figure 1. 솔루션 개요
사용자가 채팅으로 사건 내용을 입력하면, (1) Claude 3.5 Sonnet v2를 통해 사용자의 요청 내용을 먼저 파악하고 요청이 ‘서면 작성’이 맞는 경우에만 이후 워크플로를 실행합니다. 그 외의 요청인 경우에는 이후 작업을 실행하지 않고 워크플로를 실행하지 않음으로써 불필요한 AI 사용을 방지하도록 합니다.
서면 작성 요청이 맞는 경우 (2-1) 서면의 초안을 작성하는 워크플로와, (2-2) 유사한 판례를 검색해 함께 제공하는 워크플로를 병렬로 동시에 실행하게 됩니다. (2-1)로 표시된 서면 작성 워크플로에서는 여러 서면 문서 형식 중 작성해야 할 문서의 양식을 읽어온 후, Claude 3.5 Sonnet v2가 사용자가 입력한 사건 내용을 해당 문서에 알맞는 형태로 재구성하고 법리적 해석을 작성합니다. 이 내용을 .docx 파일에 작성하여 곧바로 다운 받아 사용할 수 있는 서면 초안 문서로 제공(3-1) 할 수 있도록 합니다.
(2-2)로 표시된 유사 판례 검색 워크플로에서는 RAG를 구현하기 위해 Bedrock Knowledge bases를 활용하여 대륜 팀이 보유하고 있는 대량의 과거 판례 데이터베이스에서 유사한 판례를 검색합니다. 이후 검색된 각 판례의 내용을 간결하게 요약하는 작업을 거친 뒤, 관련 판례의 목록을 채팅으로 제공(3-2) 하여 고객이 서면과 함께 참고 자료로 활용할 수 있도록 합니다. 유사 판례 검색 워크플로에서는 여러 판례를 검색하고 요약하는 반복적인 과정을 단순하게 정의하고 실행하기 위해 Bedrock Flows 기능을 활용했습니다. (자세한 내용은 이후 워크플로 및 구현 상세에서 이어집니다.)
솔루션 아키텍처
서면 작성 AI가 어떤 아키텍처로 구현되었는지 자세히 알아볼까요? 아래는 서면 작성 AI의 아키텍처 다이어그램으로, 위에서 설명한 (1) 사용자 의도 분석, (2-1) 서면 파일 작성, (2-2) 관련 판례 제공의 흐름이 어떤 서비스로 구현되었는지를 나타냅니다.
Figure 2. 서면 작성 AI 솔루션 아키텍처
사용자가 채팅 애플리케이션을 통해 사건 내용을 입력하고 원하는 서류 형식을 선택해 요청을 제출하면, 요청한 내용은 AWS Lambda로 전달됩니다. 해당 Lambda 함수가 AWS Step Functions 워크플로를 실행시키면, 워크플로 내부에서 (1) 사용자 의도 분석을 위해 Amazon Bedrock을 이용해 사용자가 요청한 내용이 무엇인지 파악한 뒤, Step Functions의 Choice state를 이용해 ‘서면 작성 요청’인 경우에만 다음 단계를 실행 시키도록 흐름을 제어합니다 (구현 상세 1 참고). 서면 작성 요청인 경우, (2-1) 사건 내용을 바탕으로 법적 형식에 맞는 서면 초안을 작성하는 로직과, (2-2) 유사한 판례를 검색해 서면과 함께 제공하는 RAG 로직을 Step Functions의 Parallel state를 이용해 병렬로 실행하여, 사용자가 서면 초안과 관련 판례를 함께 채팅으로 받아볼 수 있도록 구성하였습니다. 자세한 내용은 아래 [워크플로 및 구현 상세] 섹션에서 설명 드리겠습니다.
워크플로 및 구현 상세
아래는 Step Functions로 구현한 서면 작성 AI의 핵심 로직 워크플로입니다. 사용자 의도 분석 (구현 상세 1)을 진행한 후, 서면 파일 작성 (구현 상세 2-1), 그리고 관련 판례 제공 (구현 상세 2-2)의 단계를 병렬로 실행합니다. 각 단계 별 자세한 구현 내용은 아래에 이어집니다.
Figure 3. 서면 작성 AI의 Step Functions 워크플로
구현 상세 1: 사용자 의도 분석 및 서면 작성 요청 필터링
대륜 서면 작성 AI는 채팅을 이용해 사용자로부터 사건 내용을 입력 받고 이를 AI로 분석한 뒤 서면 작성을 위한 여러 추가적인 과정을 거치는 등 다수의 단계로 구성된 워크플로이기 때문에 많은 경우의 수를 고려해야 했습니다. 채팅으로 들어온 사용자의 요청이 ‘서면 작성’이 아니라 단순 질문이거나 법률과 관계 없는 요청일 경우에는 서면 작성을 위한 다음 단계를 실행할 필요가 없었기 때문에, 가장 먼저 Amazon Bedrock을 이용해 관련 요청이 맞는지 사용자의 의도를 확인하는 과정을 거쳤습니다.
Step Functions 워크플로 내에서 Bedrock InvokeModel API를 통해 Claude 3.5 Sonnet v2을 호출하여 사용자 요청의 의도를 파악합니다. 사용자의 의도가 ‘서면 작성’이 아닌 경우에는, Step Functions의 Choice state를 이용해 다음 단계를 실행하지 않고 워크플로를 종료하도록 분기 처리를 해주었습니다. 만약 서면 작성 요청이 맞는 경우에는, 사용자가 입력한 내용으로부터 법률적인 요구사항을 분류합니다.
예를 들어, “온라인 게임에서 현금 거래 중 사기를 당한 사건에 대한 고소장을 작성해달라”고 요청하면, 아래와 같은 [프롬프트]와 함께 요청이 Claude 3.5 Sonnet v2에 전달되어, [결과물]과 같이 사용자의 의도 (action와 요청 내용 요약 (summary)이 도출됩니다.
[프롬프트]
[결과물]
Input 예시:
내가 온라인 게임에서 현금 거래를 하는데, 상대방이 내 돈을 받고 아이템을 보내주지 않았어. 이 사건에 대해 고소장을 작성해줘.
Output 예시:
위 Output의 `action` 값을 기준으로 Step Functions의 Choice state를 설정해, 값이 1인 경우 (고소장을 작성하길 원하는 경우) 에만 서면 작성 워크플로를 실행하도록 설정, 그 외의 경우에는 다음 단계를 실행하지 않도록 구성했습니다. 이와 같이 분기 처리를 진행한 것은 시간 및 비용 절감 측면에서 도움이 되었습니다.
또한 위와 같이 AI 응답을 출력할 때 종종 Json 객체 앞뒤로 불필요한 내용을 덧붙이거나, 표준에 맞지 않은 문자열이 들어가 파싱이 안 되는 경우가 있었는데 이를 해결하고자 Lambda 함수 (JsonSummaryPostProcessing)를 추가하여, json에서 벗어난 문자를 제거하고 표준 문자로 치환하는 과정을 거쳤습니다.
구현 상세 2-1: 서면 파일 작성
사용자가 제공한 사건 정보를 바탕으로 법률 서면 초안을 작성합니다. 이 초안은 법적 형식을 갖추고 있어 법적 효력이 있을 수 있도록 구성됩니다.
서면은 그 종류가 굉장히 다양하기 때문에 각각의 서면의 종류에 따라 작성해야 할 정보가 다릅니다. 예를 들어 ‘고소장’에는 사용자와 상대방의 인적 사항과 고소 이유에 대해서만 작성하면 되지만, ‘답변서’에는 사용자와 상대방의 인적 사항과 상대방의 고소 이유, 그에 대한 사용자의 답변이 작성되어야 하고 문서 양식도 달라집니다. 이에 대륜 팀은 문서 별로 .docx 형식의 비어있는 서면 템플릿 파일과, 해당 템플릿에 맞게 서면을 작성하도록 미리 작성된 System prompt를 S3 버킷에 저장해두고, 사용자가 선택한 문서 형식에 따라 해당 정보를 함께 불러오도록 구성했습니다. 이렇게 S3에서 불러온 프롬프트를 Claude 3.5 Sonnet v2에 전달하여, 사용자가 입력한 사건 개요를 바탕으로 해당 문서에 필요한 내용을 작성합니다.
[프롬프트]
[결과물]
위와 같이 AI가 서면에 작성할 내용을 생성한 이후에는, 해당 값들을 .docx 형식의 서면 파일에 붙여넣는 Lambda 함수를 실행합니다. 그 결과, 아래와 같은 서면 초안 파일이 완성됩니다.
Figure 4. 서면 작성 AI를 통해 작성된 결과물 (작성 전/ 작성 후)
구현 상세 2-2: 관련 판례 검색 및 제공 (RAG)
사용자가 입력한 사건과 유사한 판례를 검색하고 그 결과를 요약해 제공하기 위해 RAG를 구현했습니다. 이는 사용자가 유사한 법적 문제에서 참고할 수 있는 정보를 쉽게 얻을 수 있도록 합니다.
RAG 구축을 위해 먼저 대륜 팀은 11만여 건의 과거 판례 파일을 Amazon S3 버킷에 저장하고, Bedrock Knowledge bases를 이용해 검색 가능한 형태의 지식 베이스를 생성했습니다. 이때 RAG의 검색 성능을 높이기 위해서, S3에 파일을 저장하기 전 하나의 파일에는 하나의 판례에 대한 내용만 들어가도록 하고, 모든 파일의 내용이 같은 형식을 가지도록 전처리하는 작업을 거쳤습니다. S3에 데이터를 구성한 후에는 Knowledge base에서 제공하는 ‘Default Chunking’ 전략을 활용하여 문서를 적절한 Chunk로 나누고, Amazon Titan Embedding V2 모델을 이용해 문서를 임베딩하는 작업을 거쳐 RAG를 구성했습니다. 이렇게 구축한 RAG에서 특정 판례를 검색 (Retrieve) 해올 때는 Bedrock Knowledge bases가 기본 제공하는 Hybrid Search 옵션을 선택해 벡터 유사도를 활용한 Semantic 검색과 키워드 기반의 Lexical 검색이 둘 다 활용될 수 있도록 함으로써 검색의 정확도를 높였습니다. Bedrock Knowledge base는 이렇게 Chunking 방식부터 Embedding 모델, 그리고 Search 방식 선택에 있어 다양한 옵션을 제공해주었기 때문에 RAG를 손쉬우면서도 높은 정확도로 구성하도록 도와주었습니다.
데이터를 검색해온 후에는, 해당 데이터를 요약 및 처리하는 과정이 반복적으로 수행되어야 하기 때문에, 대륜 팀은 AI 워크플로의 쉬운 흐름 제어 및 다른 서비스와의 간편한 통합을 위해 Bedrock Flows를 활용했습니다. Bedrock Flows는 Amazon Bedrock에서 생성형 AI 애플리케이션의 설계 및 실행을 손쉽게 돕기 위한 기능으로, 아래와 같은 GUI를 이용해 시각적으로 워크플로를 정의하고 흐름을 관찰하는 데 도움이 됩니다. Bedrock Flows의 자세한 활용 방법은 문서를 참고해주세요.
Figure 5. Bedrock Flows의 flow builder UI
대륜 팀은 Bedrock Flows를 이용하여 관련 판례를 검색하고 처리하는 RAGFlow (Figure 6) 와 관련 판례 정보를 간결하게 요약하는 SummarizationFlow (Figure 7)의 2가지 워크플로로 정의했습니다. RAGFlow에서는 관련 판례를 검색하고 각각의 판례에 대해 이미 작성된 요약이 있는지 판단하여, 이전에 요약해둔 값이 S3에 있다면 해당 내용을 불러오고, 없다면 SummarizationFlow를 호출해 새로운 요약을 생성합니다. 이와 같이 여러 단계로 구성된 워크플로를 Bedrock Flows의 Condition 노드와 Iterator 노드를 이용해 손쉽게 구현할 수 있었습니다.
먼저, Step Functions 워크플로 (Figure 3) 내에서 InvokeBedrockFlows
Lambda 함수가 유사 판례 검색을 위해 아래의 RAGFlow에 Input으로 사건 개요를 전달하며 Flow가 시작됩니다. RAGFlow는 총 4개의 단계를 거치며 판례를 검색하고 각 판례에 대해 요약과 같은 후처리를 진행합니다.
Figure 6. RAGFlow
- 단계 1. Flow input으로 String 형태의 사건 개요 (document)가 입력되면, Bedrock Knowledge base 노드 (
FindCaseLaw
)에서 사건 내용과 비슷한 판례를 검색하고, 유사 판례 데이터 결과를 Array 형태로 다음 단계에 반환합니다. -
- 단계 2. Iterator 노드 (
IteratorFiles
)를 이용해 배열 내의 각 판례 데이터 객체에 접근한 뒤, - 단계 3. Condition 노드 (
IsSummaryExist
)를 이용해 각 판례 데이터에 대해 “이전에 작성된 요약이 있는지” 확인합니다. (기존 요약이 있다면 4-2, 없다면 4-1로 이어집니다.) - 단계 4-1. 만약 이전에 요약한 값이 없고 새로 검색된 판례인 경우,
CreateSummaryOrBypass
Lambda 함수가 SummarizationFlow (Figure 7 참고) 를 호출하여 판례 요약을 새로 작성합니다. Summary가 작성되면 다른 판례 요약과 JSON Object로 합치는 작업을 진행 (CombineData
) 후, 관련 판례 데이터를 리턴 (ReturnSummary_1
)하며 Flow가 종료됩니다. - 단계 4-2. 만약 이전에 요약한 값이 있다면, S3에서 해당 요약 내용을 불러온 뒤 (
LoadSummary
), 다른 판례 데이터와 합치는 작업을 진행 (CombineData
) 후 관련 판례 데이터를 리턴 (ReturnSummary_2
)하며 Flow가 종료됩니다.
아래는 RAGFlow 내에서 각 판례 요약 및 후처리를 위해 호출하는 SummarizationFlow 입니다. SummarizationFlow 내에서는 Prompts 노드 (GenerateCaseLawSummary
) 를 거치며 Claude 3.5 Sonnet v2가 새로 요약을 생성하고, 추후 동일 판례 검색 시 요약된 텍스트만 가져오기 위해 이를 S3에 저장 (SaveCaseLawSummary
) 하는 과정을 거칩니다.
Figure 7: SummarizationFlow
이와 같이, 검색된 판례 여러 건에 대하여 상태를 파악하고 서로 다른 단계를 각각 반복적으로 수행하는 데에 Bedrock Flows는 많은 도움이 되었습니다. 위 과정이 모두 끝나면 아래와 같이 관련 판례의 판결 번호와 요약, 출처가 배열로 반환됩니다.
[결과물]
그 결과, 아래와 같이 채팅 창에서 관련 유사 판례를 검색한 결과를 서면과 함께 제공할 수 있게 되었습니다.
Figure 8. 대륜 서면 작성 AI 챗봇 화면
솔루션 도입 효과 및 향후 계획
이 서비스를 통해 법적 문서의 초안 작성 시간을 크게 단축시켰고, 사용자와 비슷한 법적 사례를 쉽게 검색하여 관련 정보를 제공할 수 있게 되었습니다. 결과적으로 사용자들은 법적 조치를 준비하는 과정에서 더 높은 신뢰성과 효율성을 경험할 수 있게 되었습니다.
향후에는 더 다양한 서면 종류를 추가하여 솔루션의 활용 범위를 확대할 계획입니다. 또한, 사용자 피드백을 반영하여 AI의 정확성과 응답의 자연스러움을 지속적으로 개선해 나갈 예정입니다.
현 시점에서는 우선 사내 변호사들을 대상으로 오픈할 예정이며, 애플리케이션을 더욱 개선하여 사용자 범위를 일반인 유저들로 확대할 계획입니다.
대륜 팀이 AWS 기술을 선택한 이유
Amazon Bedrock을 선택한 이유
1. 다양한 최신 모델을 테스트 및 선택하기 쉬운 환경 제공
대륜 서면 작성 AI는 Amazon Bedrock을 적극 활용하여 개발되었습니다. Bedrock은 다양한 AI 기업의 최신 파운데이션 모델을 API를 통해 쉽게 활용할 수 있는 완전관리형 서비스입니다. 대륜 팀은 Amazon Bedrock이 최신 고성능 모델을 안정적으로 제공하고, 다양한 모델을 단순히 API 파라미터 변경 만으로 사용할 수 있는 유연성을 제공하여 지속적으로 새로운 모델을 활용하고 테스트해볼 수 있다는 점에서 최적의 선택이라고 판단하여 선택하게 되었습니다.
대륜 팀은 Amazon Bedrock에서 제공하는 다양한 모델을 테스트한 끝에 Claude 3.5 Sonnet v2모델을 선택하게 되었으며, 해당 모델은 동일 계열 모델 대비 비용 효율적이면서도 서면 초안 작성과 같은 고급 언어 작업에서 탁월한 품질을 보였습니다. 현재 해당 모델은 뛰어난 성능과 효율성을 통해 대륜 AI 솔루션의 핵심 역할을 하고 있습니다.
2. Amazon Bedrock Flows
Bedrock Flows 역시 대륜 팀이 AWS에서 생성형 AI 애플리케이션 개발을 시작한 결정적인 요인 중 하나였습니다. Bedrock Flows는 생성형 AI 워크플로를 시각적으로 설계하고 프롬프트를 기반으로 다양한 AWS 서비스와 손쉽게 통합하는 데에 도움이 되었으며, RAG 등의 생성형 AI 관련 로직으르 빠르게 개발하고 실험하고자 했던 대륜 팀에 특히 유용한 기능이었습니다.
Bedrock Flows를 선택한 가장 큰 이유 중 하나는, 코드를 짜지 않고도 Flows가 제공하는 Iterator 노드, Condition 노드와 같은 기능을 조합해서 복잡한 로직을 시각적으로 구성할 수 있었기 때문입니다. 그 예시로 (구현 상세 2-2)의 판례 검색 기능을 개발할 때, RAG를 통해 여러 개의 판례 목록을 검색해 온 후, 리스트 내의 각각의 판례에 대해 기존에 요약된 값이 S3에 있는지 확인, 만약 값이 있으면 S3로, 값이 없다면 새로운 요약을 Bedrock이 작성하도록 하는 등의 복잡한 로직의 구현이 필요했는데, 이 경우 Iterator 노드를 이용해 리스트에 각 값에 편하게 접근할 수 있었고 Condition 노드를 이용해 각 데이터에 대한 조건 검사를 쉽게 구성할 수 있었습니다. 이러한 흐름을 코드로 짜야 했다면 흐름을 정의하는 것부터 여러 분기 처리 및 테스트까지 여러 고려사항이 있었겠지만, Bedrock Flows가 제공하는 Flow builder UI를 이용해 손쉽게 흐름을 정의하고 테스트할 수 있었습니다.
또한 Bedrock Flows의 Prompt Management 노드 역시 Bedrock을 활용하는 데 큰 도움이 된 기능입니다. Prompt Management는 프롬프트 작성과 변수 지정, 버전 관리 및 비교를 한 번에 수행할 수 있는 기능으로, 작성한 프롬프트의 특정 버전을 사용하고 변수 목록을 자동으로 UI에 표시해주어 프롬프트의 관리와 테스트를 매우 편리하게 만들었습니다. 대륜 팀은 Prompt Management 의 변형 비교를 이용해 작성한 프롬프트에 대해 다양한 조건과 다양한 모델을 바꾸어 테스트했을 때 응답이 어떻게 달라지는지 시각적으로 확인했고, 이를 통해 여러가지 조건과 모델을 대상으로 테스트하고 개선점을 찾을 수 있었습니다. 아래와 같이, 동일 모델에 대해 서로 다른 프롬프트를 입력했을 때, 각각 어떤 응답 값이 나오는지 한눈에 비교하고 더 적합한 프롬프트를 찾을 수 있었습니다.
Figure 9. Bedrock Prompt Management UI
3. Amazon Bedrock Knowledge bases
AI가 작성한 서면 초안과 함께 사용자들이 법률 관련 데이터를 손쉽게 찾아보고 참고하도록 돕기 위해 대륜 팀은 RAG를 이용한 유사 판례 검색 기능을 함께 개발하였습니다. 이를 위해 Bedrock에서 제공하는 관리형 RAG 기능인 Knowledge bases를 활용하였는데, 이는 대륜 팀이 보유한 11만여 건의 방대한 판례 데이터에서도 높은 수준의 검색 성능을 보이며 Claude 3.5 Sonnet v2와 같은 최신 모델과도 손쉽게 통합할 수 있었기 때문에 대륜 팀이 단기간 내에 RAG를 구축하는 데 있어 가장 적합한 선택이었습니다.
Amazon Bedrock Knowledge bases를 사용함으로써 서면 초안 작성 뿐만 아니라, 초안과 관련된 판례 정보를 추가로 제공함으로써 더 신뢰할 수 있는 AI 솔루션을 구현할 수 있었습니다. 해당 솔루션을 통해 단순히 언어 모델이 생성한 텍스트를 제공하는 것에 그치지 않고, 정확한 법적 근거와 관련된 판례를 신뢰성 있게 연결하여 사용자에게 더욱 유용한 정보를 제공할 수 있다는 점에서 큰 강점이 되고 있습니다.
이렇게 Amazon Bedrock이 제공하는 다양한 기능을 활용함으로써 개발 시간을 크게 단축할 수 있었고, 이는 대륜 팀이 AI 서면 작성과 RAG를 통한 판례 제공의 두 가지 핵심 기능을 한정된 시간 안에 균형 있게 발전시키는 데 중요한 역할을 했습니다.
AWS Step Functions를 선택한 이유
대륜 팀에서 AWS Step Functions를 도입하게 된 가장 큰 이유는, 서면 작성 AI의 복잡한 흐름을 명확하게 설계하고 검증하기 위해서 였습니다. 대륜 팀은 새로운 서비스를 설계할 때 추상적인 아이디어를 구체적인 흐름으로 정리하는 데 어려움을 겪곤 했는데, Step Functions를 도입하면서 이러한 설계 과정을 크게 개선할 수 있었습니다. Step Functions를 통해 각 단계를 블럭 형태로 연결하고 시각적으로 확인할 수 있었기 때문에, 초기 설계에서부터 구현까지의 유연성과 설계 검증이 훨씬 수월 해졌습니다. 특히, 설계 단계에서 시간이 오래 걸리는 작업이나 병렬 처리가 필요한 경우가 많았는데, 이때 Step Functions의 ‘Parallel’ state를 활용해 이러한 작업들을 동시에 처리할 수 있었습니다. 또한 조건에 따라 다른 로직을 실행해야 하는 경우에는 ‘Choice’ state를 이용해 간단히 분기 처리를 진행했습니다. 이런 식으로 복잡한 흐름을 간단하고 직관적으로 설계할 수 있었고, 각 단계 간의 Input과 Output을 테스트하면서 설계를 더욱 안정적으로 만들 수 있었습니다.
또한 기존에는 프로세스 중 오류가 발생했을 때, CloudWatch에 접속해 로그를 추적하는 방식으로 문제를 해결해야 했는데, 이는 시간이 많이 소모되고 번거로운 작업이었습니다. Step Functions를 도입하면서 아래와 같은 UI를 통해 상태머신의 진행 상황을 시각적으로 확인할 수 있었고, 에러가 발생한 위치도 명확히 추적할 수 있게 되면서, 문제 해결 과정이 훨씬 더 간단 해졌습니다. 이 부분이 대륜 팀이 AWS Step Functions를 선택하게 된 결정적인 이유 중 하나입니다.
Figure 10. Step Functions가 제공하는 console
이와 같이, 대부분의 애플리케이션 로직은 Step Functions로 작성하고, AI 관련 로직은 Bedrock Flows를 활용하여 구조를 명확히 분리할 수 있었습니다.
마무리
지금까지 Amazon Bedrock의 다양한 기능과 Claude 3.5 Sonnet v2모델을 통해 사용자의 요건을 자세하게 파악해 법률 서면 파일을 작성해주고, 사용자가 참고할 수 있는 관련 판례 데이터도 함께 검색해볼 수 있는 대륜의 서면 작성 AI의 구현 과정을 소개해드렸습니다.
주식회사 대륜은 생성형 AI와 같은 기술을 적극 활용하여 법률 전문가가 아니더라도 누구나 손쉽게 법률 서비스에 접근할 수 있는 환경을 만들기 위해 다양한 시도를 하고 있습니다. 해당 솔루션이 법률 서비스를 이용하는 고객들의 경험을 혁신하길 기대합니다.
해당 솔루션을 만드는 데 사용된 AWS 서비스들의 더 자세한 사용법 및 사용 사례가 궁금하신 분들은 아래의 자료를 참고해보세요.
- Amazon Bedrock의 기능에 대해 더 자세히 알아보고 싶으신 경우, Amazon Bedrock Workshop을 참고하세요.
- RAG 구축 시 활용된 Amazon Bedrock의 Knowledge base를 직접 사용해보고 싶으시다면, 다음 블로그를 읽어보시는 것을 추천 드립니다: Amazon Bedrock Knowledge base로 30분 만에 멀티모달 RAG 챗봇 구축하기 실전 가이드
- Amazon Bedrock의 Flows의 사용법이 궁금하시다면, 다음 영상을 통해 사용법을 따라가보세요: Amazon Bedrock Flows Demo (Youtube 영상)
- AWS Step Functions 사용법에 대해 알고 싶으시다면, AWS Step Functions Workflow Studio Workshop을 참고하세요. 직접 쉽게 따라해볼 수 있는 시나리오 기반의 실습이 준비되어 있습니다.