top of page

Llama3 와 Bedrock KB를 활용한 초간단 RAG 패턴 구현하기 (with LangChain)

Llama3 와 Bedrock KB를 활용한 초간단 RAG 패턴 구현하기 (with LangChain)

Llama3와 Bedrock KB를 활용한 초간단 RAG 패턴 구현하기

Written by Hyeonmin Kim


챗봇을 구현할 때, RAG 패턴은 이제 옵션이 아닌 필수가 되었습니다.


RAG 패턴을 직접 구현하려면 벡터 임베딩, 벡터 데이터베이스, 문서 찾기 등 일련의 과정을 직접 구현해야 합니다. 하지만 이 과정에서 도메인 지식이 없다면 구현에 어려움이 있습니다. 오늘은, 이 과정을 클릭 몇 번과 최소한의 코드로 Bedrock KB와 SageMaker Jumpstart, LangChain을 사용하여 최대한 간단하게 구현해 보도록 하겠습니다.


  1. Amazon Bedrock Knowledge Bases (이하 Bedrock KB라고 부르겠습니다)을 설정하고,

  2. 이번에 새롭게 추가된 Llama3를 Jumpstart 기능으로 배포한 후,

  3. LangChain을 활용하여 문서를 검색하고 메시지를 생성


하는 방법에 대해 알아보도록 하겠습니다.


⚠️주의사항: 현재 Bedrock KB 기능은 서울 리전에서 사용할 수 없습니다. 따라서 미국 동부(Virginia)를 활용하도록 하겠습니다. 반드시 확인해 주세요

  1. 데이터 준비

Bedrock KB를 사용하면, 사용자가 직접 데이터를 임베딩하여 벡터 데이터베이스에 저장할 필요가 없습니다. S3에 데이터를 저장하기만 하면, KB가 내부적으로 임베딩 모델과 벡터 데이터베이스를 활용하여 데이터를 인덱싱합니다. 사용자의 입장에서는 S3를 생성하여, 원하는 도큐먼트를 저장하기만 하면 됩니다.


S3 콘솔로 이동하여, 도큐먼트를 저장할 S3를 생성합니다.

S3 콘솔에서 도큐먼트를 저장할 S3 생성

원하는 도큐먼트를 업로드합니다. 본 예시에서는 한글로 구성된 버전을 업로드하겠습니다.


지원되는 데이터 형식은 다음과 같으며 각 파일은 50MB를 넘지 않아야 합니다.

  • 지원되는 데이터 형식

    • Plain text (.txt), Markdown(.md), HyperText Markup Language(.html)

    • Microsoft Word document(.doc/.docx), Comma-separated values(.csv)

    • Microsoft Excel spreadsheet(.xls, .xlsx), Portable Document(.pdf)



  1. Bedrock KB 설정

Bedrock KB를 설정할 때 임베딩 모델을 선택할 수 있습니다. 한국어를 지원하는 Cohere사의 Embed v3 Multi-Language 모델을 사용하고, 벡터 데이터베이스로는 Amazon Opensearch Serverless를 활용하겠습니다.


Bedrock 콘솔로 이동하여 오케스트레이션 탭의 지식기반으로 이동한 후 지식기반을 생성합니다.

Bedrock 콘솔에서 오케스트레이션>지식 기반>지식 기반 생성

지식 기반 이름을 설정합니다.

지식 기반 이름 설정

데이터 소스 이름과 S3를 설정해야 하는데, 이전에 생성한 S3를 지정하도록 하겠습니다.


임베딩 모델로는 한국어를 지원하고 성능이 높은 Cohere사의 Embed Multilingual v3모델과 벡터 데이터 베이스로는 Opensearch Serverless를 활용하여 빠른 생성을 진행하도록 하겠습니다.


모든 내용이 완료되었다면 지식기반을 생성합니다. 이 과정에는 수 분 정도 시간이 소요됩니다.


생성이 완료되면 동기화를 진행합니다. 이제 RAG 패턴을 위한 저장소 부분이 구현 완료되었습니다.



  1. Llama3 배포 (SageMaker Jumpstart)

Meta는 이전부터 SageMaker Model Provider이기 때문에, Jumpstart 기능을 활용하여 클릭 몇 번으로 모델을 배포할 수 있습니다. 이번 모델에서는 g5.2xlarge 스펙을 사용하는 Llama 3 8B Instruct 모델을 사용하도록 하겠습니다. 스펙은 사용자의 상황에 맞게 더 많은 파라미터모델을 사용하거나 Inferentia 유형을 사용하셔도 됩니다.


SageMaker Studio 환경으로 접속하여 Jumpstart 기능을 선택합니다.

SageMaker Studio 환경으로 접속하여 Jumpstart 기능을 선택

모델을 검색하여 Meta-Llama-3-8B-Instruct로 이동합니다.

모델을 검색하여 이동

배포를 선택합니다.

배포를 선택

배포를 설정한 후 배포를 진행합니다.

배포 설정 후, 배포 진행


  1. LangChain을 통한 추론

이제 LangChain과 통합하여 생성된 AWS 리소스를 활용한 QnA를 진행해 보도록 하겠습니다.


먼저 필요한 라이브러리들을 import 합니다. LangChain에서 SageMaker를 지원하기 때문에 쉽게 리소스들을 가져올 수 있습니다.

from langchain_community.llms.sagemaker_endpoint import SagemakerEndpoint
from langchain_community.llms.sagemaker_endpoint import LLMContentHandler
from langchain_community.retrievers import AmazonKnowledgeBasesRetriever
from langchain_core.prompts import PromptTemplate
from langchain.chains import RetrievalQA
from typing import Dict
import json

앞서 설정한 엔드포인트 이름과, 리전을 설정합니다. 이때 반드시 AWS 관련 config가 설정되어 있어야 하며, 리전을 입력하는 이유는 default 리전이 아닌 Virginia 리전을 사용하기 때문입니다.

endpoint_name = "hmkim-llama3"
region_name = "us-east-1"

SageMaker Endpoint와 통신할 때 input / output 데이터의 포맷과 콘텐츠 타입을 설정하는 핸들러를 설정합니다.

class CustomContentHandler(LLMContentHandler):
    content_type = "application/json"
    accepts = "application/json"

    def transform_input(self, prompt: str, model_kwargs: Dict) -> bytes:
        input_str = json.dumps({"inputs": prompt, **model_kwargs})
        return input_str.encode('utf-8')
    
    def transform_output(self, output: bytes) -> str:
        response_json = json.loads(output.read().decode('utf-8'))
        return response_json["generated_text"]

Llama 2와 다른 점은 받아온 response의 경우 배열로 구성되어 있지 않기 때문에 인덱스 부분을 제거해야 합니다.


SageMaker 엔드포인트를 설정하고, 모델을 설정합니다. 이때의 핸들러로 앞서 설정한 핸들러를 지정합니다.

llm = SagemakerEndpoint(
    endpoint_name=endpoint_name, 
    region_name=region_name,
    model_kwargs={"parameters": {
        "max_new_tokens": 1024,
        "top_p": 0.9,
        "temperature": 0.1,
        "stop": "<|eot_id|>"
    }},
    content_handler=CustomContentHandler(),
)

리트라이버를 선언합니다. 생성한 Bedrock Knowledge Bases를 Retriever로 설정하겠습니다.

이때 생성한 Bedrock KB의 id를 설정합니다.

retriever = AmazonKnowledgeBasesRetriever(
    knowledge_base_id="여기에 Bedrock KB id를 입력해주세요",
    retrieval_config={"vectorSearchConfiguration": {"numberOfResults": 4}},
    region_name="us-east-1"
)

질문을 설정하고, 리트라이버에 전달하여 적합한 데이터를 가져오는지 테스트합니다.

question = "길을 가다가 심한 욕을 들어서 명예훼손으로 신고하고싶은데, 가능할까?"
query = question
retriever.get_relevant_documents(query=query)

다음과 같은 문서들을 가져오는 것을 확인할 수 있습니다. 적합한 문서네요.

[Document(page_content='<개정 1995. 12. 29.>   제308조(사자의 명예훼손) 공연히 허위의    사실을 적시하여 사자의 명예를 훼손한 자   는 2년 이하의 징역이나 금고 또는 500만   원 이하의 벌금에 처한다. <개정 1995.    12. 29.>   제309조(출판물 등에 의한 명예훼손) ①    사람을 비방할 목적으로 신문, 잡지 또는    라디오 기타 출판물에 의하여 제307조제1   항의 죄를 범한 자는 3년 이하의 징역이나    금고 또는 700만원 이하의 벌금에 처한다.    <개정 1995. 12. 29.>     ② 제1항의 방법으로 제307조제2항의    죄를 범한 자는 7년 이하의 징역, 10년 이   하의 자격정지 또는 1천500만원 이하의 벌   금에 처한다. <개정 1995. 12. 29.>   제310조(위법성의 조각) 제307조제1항의    행위가 진실한 사실로서 오로지 공공의 이   익에 관한 때에는 처벌하지 아니한다.   제311조(모욕) 공연히 사람을 모욕한 자는    1년 이하의 징역이나 금고 또는 200만원 이   하의 벌금에 처한다. <개정 1995. 12. 29.>   제312조(고소와 피해자의 의사) ① 제308   조와 제311조의 죄는 고소가 있어야 공소   를 제기할 수 있다. <개정 1995. 12. 29.>     ② 제307조와 제309조의 죄는 피해자의    명시한 의사에 반하여 공소를 제기할 수 없   다.', metadata={'location': {'s3Location': {'uri': 's3://hmkim-bedrock-kb-example/법전.pdf'}, 'type': 'S3'}, 'score': 0.58440983}),
 Document(page_content='이 경우 검사는 송부받은 날부터    90일 이내에 사법경찰관에게 반환하   여야 한다.     [본조신설 2020. 2. 4.]   제245조의6(고소인 등에 대한 송부통지)    사법경찰관은 제245조의5제2호의 경우에   는 그 송부한 날부터 7일 이내에 서면으로    고소인ᆞ고발인ᆞ피해자 또는 그 법정대리   인(피해자가 사망한 경우에는 그 배우자ᆞ        형사소송법   - 215 -   직계친족ᆞ형제자매를 포함한다)에게 사건   을 검사에게 송치하지 아니하는 취지와 그    이유를 통지하여야 한다.     [본조신설 2020. 2. 4.]   제245조의7(고소인 등의 이의신청) ① 제   245조의6의 통지를 받은 사람은 해당 사법   경찰관의 소속 관서의 장에게 이의를 신청   할 수 있다.     ② 사법경찰관은 제1항의 신청이 있는    때에는 지체 없이 검사에게 사건을 송치하   고 관계 서류와 증거물을 송부하여야 하며,    처리결과와 그 이유를 제1항의 신청인에게    통지하여야 한다.     [본조신설 2020. 2. 4.]   제245조의8(재수사요청 등) ① 검사는 제   245조의5제2호의 경우에 사법경찰관이 사   건을 송치하지 아니한 것이 위법 또는 부당   한 때에는 그 이유를 문서로 명시하여 사법   경찰관에게 재수사를 요청할 수 있다.     ② 사법경찰관은 제1항의 요청이 있는    때에는 사건을 재수사하여야 한다.     [본조신설 2020. 2. 4.]', metadata={'location': {'s3Location': {'uri': 's3://hmkim-bedrock-kb-example/법전.pdf'}, 'type': 'S3'}, 'score': 0.53611267}),
 Document(page_content='이 경우 피의자가 이의를 제기하였던 부분   은 읽을 수 있도록 남겨두어야 한다. <개정    2007. 6. 1.>     ③ 피의자가 조서에 대하여 이의나 의견   이 없음을 진술한 때에는 피의자로 하여금    그 취지를 자필로 기재하게 하고 조서에 간   인한 후 기명날인 또는 서명하게 한다. <개   정 2007. 6. 1.>   제244조의2(피의자진술의 영상녹화) ① 피   의자의 진술은 영상녹화할 수 있다. 이 경   우 미리 영상녹화사실을 알려주어야 하며,    조사의 개시부터 종료까지의 전 과정 및 객   관적 정황을 영상녹화하여야 한다.     ② 제1항에 따른 영상녹화가 완료된 때   에는 피의자 또는 변호인 앞에서 지체 없이    그 원본을 봉인하고 피의자로 하여금 기명   날인 또는 서명하게 하여야 한다.     ③ 제2항의 경우에 피의자 또는 변호인   의 요구가 있는 때에는 영상녹화물을 재생   하여 시청하게 하여야 한다. 이 경우 그 내   용에 대하여 이의를 진술하는 때에는 그 취   지를 기재한 서면을 첨부하여야 한다.     [본조신설 2007. 6. 1.]   제244조의3(진술거부권 등의 고지) ① 검   사 또는 사법경찰관은 피의자를 신문하기    전에 다음 각 호의 사항을 알려주어야 한   다.   1. 일체의 진술을 하지 아니하거나 개개   의 질문에 대하여 진술을 하지 아니   할 수 있다는 것   2. 진술을 하지 아니하더라도 불이익을    받지 아니한다는 것   3.', metadata={'location': {'s3Location': {'uri': 's3://hmkim-bedrock-kb-example/법전.pdf'}, 'type': 'S3'}, 'score': 0.5332642}),
 Document(page_content='<개정 1995. 12. 29.>     ③ 전2항의 청구에 응하지 아니한 때에는    그 공판조서를 유죄의 증거로 할 수 없다.   제56조(공판조서의 증명력) 공판기일의 소   송절차로서 공판조서에 기재된 것은 그 조   서만으로써 증명한다.   제56조의2(공판정에서의 속기·녹음 및 영   상녹화) ① 법원은 검사, 피고인 또는 변호   인의 신청이 있는 때에는 특별한 사정이 없   는 한 공판정에서의 심리의 전부 또는 일부   를 속기사로 하여금 속기하게 하거나 녹음   장치 또는 영상녹화장치를 사용하여 녹음    또는 영상녹화(녹음이 포함된 것을 말한다.    이하 같다)하여야 하며, 필요하다고 인정하   는 때에는 직권으로 이를 명할 수 있다.     ② 법원은 속기록ᆞ녹음물 또는 영상녹화   물을 공판조서와 별도로 보관하여야 한다.     ③ 검사, 피고인 또는 변호인은 비용을    부담하고 제2항에 따른 속기록ᆞ녹음물 또   는 영상녹화물의 사본을 청구할 수 있다.     [전문개정 2007. 6. 1.]   제57조(공무원의 서류) ① 공무원이 작성   하는 서류에는 법률에 다른 규정이 없는 때   에는 작성 연월일과 소속공무소를 기재하고    기명날인 또는 서명하여야 한다. <개정    2007. 6. 1.>     ② 서류에는 간인하거나 이에 준하는 조   치를 하여야 한다.', metadata={'location': {'s3Location': {'uri': 's3://hmkim-bedrock-kb-example/법전.pdf'}, 'type': 'S3'}, 'score': 0.52974534})]

프롬프트를 설정하겠습니다. 유능한 변호사 역할을 부여하고 문서를 참고하며, 이모지를 제외한 한국어로 답변해달라고 설정했였습니다.

프롬프트 템플릿의 경우 Llama3의 프롬프트 템플릿을 따르므로, 수정 시 유의하도록 합니다.

system_template = """You are a competent lawyer. Please answer the question using the documents provided. Always answer without emojis in Korean."""

prompt_template = """<|begin_of_text|><|start_header_id|>system<|end_header_id|>

{system_template}, 문서 : {context}<|eot_id|><|start_header_id|>user<|end_header_id|>

질문: {question}<|eot_id|><|start_header_id|>assistant<|end_header_id|>
"""

prompt = PromptTemplate(
    template=prompt_template, 
    input_variables=["context", "question"],
    partial_variables={"system_template": system_template}
)

작성한 템플릿을 사용하여 Retrieval QA 제안을 생성합니다.

qa = RetrievalQA.from_chain_type(
    llm=llm, 
    retriever=retriever,
    return_source_documents=True,
    chain_type="stuff",
    chain_type_kwargs={"prompt": prompt} 
)

요청을 진행하고 response를 확인해 보면, 어떤 문서를 참고하였고, 답변은 어떻게 되는지 확인할 수 있습니다.

{'query': '길을 가다가 심한 욕을 들어서 명예훼손으로 신고하고싶은데, 가능할까?',
 'result': '제308조(사자의 명예훼손)에 따르면, 공연히 허위의 사실을 적시하여 사자의 명예를 훼손한 자는 2년 이하의 징역이나 금고 또는 500만 원 이하의 벌금에 처한다.\n\n이 경우, 길을 가다가 심한 욕을 들어서 명예훼손으로 신고하고 싶은 경우, 다음을 고려해야 합니다.\n\n1. 욕설이 허위의 사실인지 확인해야 합니다. 욕설이 허위의 사실이 아니라면, 명예훼손죄가 적용되지 않을 수 있습니다.\n2. 욕설이 공연히 이루어졌는지 확인해야 합니다. 욕설이 공연히 이루어지지 않았다면, 명예훼손죄가 적용되지 않을 수 있습니다.\n3. 피해자의 명시한 의사에 반하여 공소를 제기할 수 없습니다. 피해자가 명시한 의사에 반하여 공소를 제기하면, 공소가 제기되지 않을 수 있습니다.\n\n따라서, 길을 가다가 심한 욕을 들어서 명예훼손으로 신고하고 싶은 경우, 위의 고려 사항을 확인하고, 피해자의 명시한 의사에 반하여 공소를 제기하지 않도록 주의해야 합니다.',
 'source_documents': [Document(page_content='<개정 1995. 12. 29.>   제308조(사자의 명예훼손) 공연히 허위의    사실을 적시하여 사자의 명예를 훼손한 자   는 2년 이하의 징역이나 금고 또는 500만   원 이하의 벌금에 처한다. <개정 1995.    12. 29.>   제309조(출판물 등에 의한 명예훼손) ①    사람을 비방할 목적으로 신문, 잡지 또는    라디오 기타 출판물에 의하여 제307조제1   항의 죄를 범한 자는 3년 이하의 징역이나    금고 또는 700만원 이하의 벌금에 처한다.    <개정 1995. 12. 29.>     ② 제1항의 방법으로 제307조제2항의    죄를 범한 자는 7년 이하의 징역, 10년 이   하의 자격정지 또는 1천500만원 이하의 벌   금에 처한다. <개정 1995. 12. 29.>   제310조(위법성의 조각) 제307조제1항의    행위가 진실한 사실로서 오로지 공공의 이   익에 관한 때에는 처벌하지 아니한다.   제311조(모욕) 공연히 사람을 모욕한 자는    1년 이하의 징역이나 금고 또는 200만원 이   하의 벌금에 처한다. <개정 1995. 12. 29.>   제312조(고소와 피해자의 의사) ① 제308   조와 제311조의 죄는 고소가 있어야 공소   를 제기할 수 있다. <개정 1995. 12. 29.>     ② 제307조와 제309조의 죄는 피해자의    명시한 의사에 반하여 공소를 제기할 수 없   다.', metadata={'location': {'s3Location': {'uri': 's3://hmkim-bedrock-kb-example/법전.pdf'}, 'type': 'S3'}, 'score': 0.58440983}),
  Document(page_content='이 경우 검사는 송부받은 날부터    90일 이내에 사법경찰관에게 반환하   여야 한다.     [본조신설 2020. 2. 4.]   제245조의6(고소인 등에 대한 송부통지)    사법경찰관은 제245조의5제2호의 경우에   는 그 송부한 날부터 7일 이내에 서면으로    고소인ᆞ고발인ᆞ피해자 또는 그 법정대리   인(피해자가 사망한 경우에는 그 배우자ᆞ        형사소송법   - 215 -   직계친족ᆞ형제자매를 포함한다)에게 사건   을 검사에게 송치하지 아니하는 취지와 그    이유를 통지하여야 한다.     [본조신설 2020. 2. 4.]   제245조의7(고소인 등의 이의신청) ① 제   245조의6의 통지를 받은 사람은 해당 사법   경찰관의 소속 관서의 장에게 이의를 신청   할 수 있다.     ② 사법경찰관은 제1항의 신청이 있는    때에는 지체 없이 검사에게 사건을 송치하   고 관계 서류와 증거물을 송부하여야 하며,    처리결과와 그 이유를 제1항의 신청인에게    통지하여야 한다.     [본조신설 2020. 2. 4.]   제245조의8(재수사요청 등) ① 검사는 제   245조의5제2호의 경우에 사법경찰관이 사   건을 송치하지 아니한 것이 위법 또는 부당   한 때에는 그 이유를 문서로 명시하여 사법   경찰관에게 재수사를 요청할 수 있다.     ② 사법경찰관은 제1항의 요청이 있는    때에는 사건을 재수사하여야 한다.     [본조신설 2020. 2. 4.]', metadata={'location': {'s3Location': {'uri': 's3://hmkim-bedrock-kb-example/법전.pdf'}, 'type': 'S3'}, 'score': 0.53611267}),
  Document(page_content='이 경우 피의자가 이의를 제기하였던 부분   은 읽을 수 있도록 남겨두어야 한다. <개정    2007. 6. 1.>     ③ 피의자가 조서에 대하여 이의나 의견   이 없음을 진술한 때에는 피의자로 하여금    그 취지를 자필로 기재하게 하고 조서에 간   인한 후 기명날인 또는 서명하게 한다. <개   정 2007. 6. 1.>   제244조의2(피의자진술의 영상녹화) ① 피   의자의 진술은 영상녹화할 수 있다. 이 경   우 미리 영상녹화사실을 알려주어야 하며,    조사의 개시부터 종료까지의 전 과정 및 객   관적 정황을 영상녹화하여야 한다.     ② 제1항에 따른 영상녹화가 완료된 때   에는 피의자 또는 변호인 앞에서 지체 없이    그 원본을 봉인하고 피의자로 하여금 기명   날인 또는 서명하게 하여야 한다.     ③ 제2항의 경우에 피의자 또는 변호인   의 요구가 있는 때에는 영상녹화물을 재생   하여 시청하게 하여야 한다. 이 경우 그 내   용에 대하여 이의를 진술하는 때에는 그 취   지를 기재한 서면을 첨부하여야 한다.     [본조신설 2007. 6. 1.]   제244조의3(진술거부권 등의 고지) ① 검   사 또는 사법경찰관은 피의자를 신문하기    전에 다음 각 호의 사항을 알려주어야 한   다.   1. 일체의 진술을 하지 아니하거나 개개   의 질문에 대하여 진술을 하지 아니   할 수 있다는 것   2. 진술을 하지 아니하더라도 불이익을    받지 아니한다는 것   3.', metadata={'location': {'s3Location': {'uri': 's3://hmkim-bedrock-kb-example/법전.pdf'}, 'type': 'S3'}, 'score': 0.5332642}),
  Document(page_content='<개정 1995. 12. 29.>     ③ 전2항의 청구에 응하지 아니한 때에는    그 공판조서를 유죄의 증거로 할 수 없다.   제56조(공판조서의 증명력) 공판기일의 소   송절차로서 공판조서에 기재된 것은 그 조   서만으로써 증명한다.   제56조의2(공판정에서의 속기·녹음 및 영   상녹화) ① 법원은 검사, 피고인 또는 변호   인의 신청이 있는 때에는 특별한 사정이 없   는 한 공판정에서의 심리의 전부 또는 일부   를 속기사로 하여금 속기하게 하거나 녹음   장치 또는 영상녹화장치를 사용하여 녹음    또는 영상녹화(녹음이 포함된 것을 말한다.    이하 같다)하여야 하며, 필요하다고 인정하   는 때에는 직권으로 이를 명할 수 있다.     ② 법원은 속기록ᆞ녹음물 또는 영상녹화   물을 공판조서와 별도로 보관하여야 한다.     ③ 검사, 피고인 또는 변호인은 비용을    부담하고 제2항에 따른 속기록ᆞ녹음물 또   는 영상녹화물의 사본을 청구할 수 있다.     [전문개정 2007. 6. 1.]   제57조(공무원의 서류) ① 공무원이 작성   하는 서류에는 법률에 다른 규정이 없는 때   에는 작성 연월일과 소속공무소를 기재하고    기명날인 또는 서명하여야 한다. <개정    2007. 6. 1.>     ② 서류에는 간인하거나 이에 준하는 조   치를 하여야 한다.', metadata={'location': {'s3Location': {'uri': 's3://hmkim-bedrock-kb-example/법전.pdf'}, 'type': 'S3'}, 'score': 0.52974534})]}

출력된 답변을 보니, 매우 정확한 결과가 출력된 것을 확인할 수 있습니다.

제308조(사자의 명예훼손)에 따르면, 공연히 허위의 사실을 적시하여 사자의 명예를 훼손한 자는 2년 이하의 징역이나 금고 또는 500만 원 이하의 벌금에 처한다.

이 경우, 길을 가다가 심한 욕을 들어서 명예훼손으로 신고하고 싶은 경우, 다음을 고려해야 합니다.

1. 욕설이 허위의 사실인지 확인해야 합니다. 욕설이 허위의 사실이 아니라면, 명예훼손죄가 적용되지 않을 수 있습니다.
2. 욕설이 공연히 이루어졌는지 확인해야 합니다. 욕설이 공연히 이루어지지 않았다면, 명예훼손죄가 적용되지 않을 수 있습니다.
3. 피해자의 명시한 의사에 반하여 공소를 제기할 수 없습니다. 피해자가 명시한 의사에 반하여 공소를 제기하면, 공소가 제기되지 않을 수 있습니다.

따라서, 길을 가다가 심한 욕을 들어서 명예훼손으로 신고하고 싶은 경우, 위의 고려 사항을 확인하고, 피해자의 명시한 의사에 반하여 공소를 제기하지 않도록 주의해야 합니다.

오늘은 Llama3 모델과 Bedrock KB를 활용한 리트리버, 그리고 이것들을 활용할 수 있도록 도움을 주는 프레임워크인 LangChain을 활용하여 적은 공수로 RAG 패턴을 구현해보았습니다.


별도의 도메인지식이 필요하지 않기 때문에 많은 전문 지식이 없더라도 쉽게 활용할 수 있을 것 같습니다. 이것으로 포스트를 마칩니다.

bottom of page