Langchain과 mistral 모델을 이용한 텍스트 요약 예제
인공지능 기술의 발전으로 텍스트 요약이 더욱 정교해지고 있습니다. 이번 포스트에서는 Langchain과 mistral 모델을 활용하여 텍스트를 효과적으로 요약하는 방법을 소개하고자 합니다.
전체 코드
먼저, 텍스트 요약을 위해 사용한 Python 코드 전체를 살펴보겠습니다:
import os
from langchain_community.llms import Ollama
from langchain.prompts import PromptTemplate
from langchain.chains.summarize import load_summarize_chain
from langchain_core.documents import Document
# Ollama 모델 초기화
llm = Ollama(model="mistral")
# 요약을 위한 프롬프트 템플릿 정의
prompt_template = """다음 텍스트를 한국어로 약 10%의 길이로 간결하게 요약해주세요. 주요 내용만 포함하고 불필요한 세부사항은 제외하세요:
{text}
요약:"""
PROMPT = PromptTemplate(template=prompt_template, input_variables=["text"])
# 요약 체인 생성
chain = load_summarize_chain(llm, chain_type="stuff", prompt=PROMPT)
def summarize_text(text):
# 텍스트를 Document 객체로 변환
doc = Document(page_content=text)
# 텍스트 요약
summary = chain.invoke([doc])
return summary['output_text']
def read_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
def count_words(text):
return len(text.split())
# 사용 예시
if __name__ == "__main__":
input_file = "ex2-original.txt"
output_file = "ex2-summary.txt"
# 파일에서 텍스트 읽기
text_to_summarize = read_file(input_file)
# 원본 텍스트의 단어 수 계산
original_word_count = count_words(text_to_summarize)
# 요약 생성
summary = summarize_text(text_to_summarize)
# 요약 텍스트의 단어 수 계산
summary_word_count = count_words(summary)
# 요약 결과와 단어 수 정보를 파일에 저장
with open(output_file, 'w', encoding='utf-8') as file:
file.write(f"원본 텍스트 단어 수: {original_word_count}\n\n")
file.write(f"요약 텍스트 단어 수: {summary_word_count}\n\n")
file.write("요약:\n")
file.write(summary)
print(f"원본 텍스트를 {input_file}에서 읽었습니다.")
print(f"원본 텍스트 단어 수: {original_word_count}")
print(f"요약 텍스트 단어 수: {summary_word_count}")
print(f"요약 비율: {summary_word_count / original_word_count:.2%}")
print(f"요약 결과를 {output_file}에 저장했습니다.")
print("\n요약:")
print(summary)
코드 설명
이 코드는 Langchain 라이브러리를 사용하여 Ollama의 mistral 모델을 통해 텍스트를 요약합니다. 주요 구성 요소는 다음과 같습니다:
- Ollama 모델 초기화: mistral 모델을 사용하여 Ollama 객체를 초기화합니다.
- 프롬프트 템플릿: 모델에게 한국어로 10% 길이의 요약을 요청하는 템플릿을 정의합니다.
- 요약 체인: Langchain의
load_summarize_chain
을 사용하여 요약 프로세스를 설정합니다. - 파일 읽기 및 쓰기: 입력 파일에서 텍스트를 읽고, 요약 결과를 출력 파일에 저장합니다.
- 단어 수 계산: 원본 텍스트와 요약 텍스트의 단어 수를 계산하여 요약 비율을 확인합니다.
사용된 모델: mistral
이 예제에서는 mistral 모델을 사용했습니다. mistral은 Mistral AI에서 개발한 오픈 소스 대규모 언어 모델(LLM)입니다. 이 모델의 주요 특징은 다음과 같습니다:
- 효율성: mistral은 상대적으로 작은 크기(7B 파라미터)에도 불구하고 뛰어난 성능을 보입니다.
- 다국어 지원: 영어뿐만 아니라 한국어를 포함한 여러 언어에서 우수한 성능을 보입니다.
- 오픈 소스: Apache 2.0 라이선스로 배포되어 자유롭게 사용, 수정, 배포할 수 있습니다.
- 다양한 작업 수행: 텍스트 생성, 요약, 번역, 질문 답변 등 다양한 자연어 처리 작업에 활용 가능합니다.
- 최신 기술 적용: Grouped-query attention(GQA)과 Sliding Window Attention 등의 최신 기술을 적용하여 효율성을 높였습니다.
mistral 모델은 그 효율성과 성능으로 인해 이런 텍스트 요약 작업에 매우 적합합니다. 특히 한국어 텍스트 처리에도 우수한 성능을 보여, 이번 예제에서 효과적으로 활용될 수 있었습니다.
요약 예제
다음은 Moshi AI에 대한 소개 글을 요약한 결과입니다:
원본 텍스트 (541 단어)
AI 기술의 발전이 눈부신 가운데, 프랑스의 비영리 연구소 Kyutai가 개발한 Moshi AI가 음성 인공지능 분야에 혁명을 일으키고 있습니다. Moshi의 가장 큰 강점은 놀라운 실시간 대화 능력과 인간에 가까운 감정 표현입니다. ...
요약 텍스트 (90 단어)
Moshi AI, 개발사 Kyutai의 제품으로, 다보 보호, 대화 맥락 유지, 처리 속도 향상을 가져왔습니다. MIMI 코덱은 고품질 유지와 실시간 처리, 의미 보존, AI 최적화, 300배 높은 압축률을 보이는 혁신적인 오디오 압축 기술입니다. Moshi AI는 개인 비서, 고객 서비스, 교육, 엔터테인먼트, 의료 분야에서 활용될 수 있습니다. 코드 공개로 인해 AI 기술의 발전을 가속화하고 소규모 팀과 개발자도 고급 AI 기술을 활용할 수 있게 합니다. Moshi AI는 실시간 대화 능력과 감성 표현으로 AI와 인간의 상호작용을 한 단계 발전시킨 중요한 이정표가 될 것입니다. Kyutai의 기술과 오픈소스 정신은 AI 기술의 민주화와 발전을 가속화할 것으로 예상됩니다.
결과 분석
- 요약률: 원본 541 단어에서 90 단어로 요약되어, 약 16.6%의 요약률을 보였습니다. 이는 목표였던 10%에 근접한 결과입니다.
- 주요 내용 포함: Moshi AI의 핵심 기능(실시간 대화, 감정 표현), MIMI 코덱의 특징, 활용 분야, 오픈소스 전략 등 중요한 정보들이 요약본에 포함되었습니다.
- 간결성: 불필요한 세부 사항을 제거하고 핵심 내용만을 간결하게 표현했습니다.
- 일관성: 요약본은 원문의 흐름을 따르면서도 정보를 압축적으로 전달하고 있습니다.
결론
Langchain과 mistral 모델을 활용한 이 텍스트 요약 예제는 AI 기술의 강력함을 보여줍니다. mistral 모델의 효율성과 다국어 지원 능력이 이 작업에 매우 적합했음을 알 수 있습니다. 긴 문서를 빠르고 정확하게 요약할 수 있는 이런 도구들은 정보 과잉 시대에 매우 유용합니다. 특히 한국어 텍스트에 대해서도 잘 작동한다는 점이 인상적입니다.
이러한 AI 요약 기술은 학술 연구, 비즈니스 보고서 작성, 뉴스 요약 등 다양한 분야에서 활용될 수 있을 것입니다. 앞으로 더 발전된 AI 모델과 함께 텍스트 요약 기술이 어떻게 진화할지 기대됩니다.
참고 사이트
이 블로그 포스트에서 다룬 내용에 대해 더 자세히 알아보고 싶다면, 다음 사이트들을 참고해 보세요:
- Mistral AI 공식 웹사이트
- mistral 모델을 개발한 Mistral AI의 공식 웹사이트입니다. 여기서 mistral 모델의 최신 버전과 기술적 세부 사항을 확인할 수 있습니다.
- Langchain 문서
- Langchain 라이브러리의 공식 문서입니다. 이 라이브러리를 사용한 다양한 NLP 작업에 대한 예제와 설명을 찾아볼 수 있습니다.
- Hugging Face - mistral-7b-v0.1
- Hugging Face에 있는 mistral-7b 모델 페이지입니다. 모델의 성능, 사용 방법, 그리고 다른 사용자들의 경험을 확인할 수 있습니다.
이 사이트들을 통해 mistral 모델, Langchain, 그리고 최신 자연어 처리 기술에 대해 더 깊이 있게 학습할 수 있습니다. AI와 자연어 처리 기술은 빠르게 발전하고 있으므로, 최신 정보를 지속적으로 확인하는 것이 중요합니다.
'언어모델 LLM > 렝체인 Langchain' 카테고리의 다른 글
Streamlit과 Langchain로 LLaMA 3.1 로 챗봇 만들기 (0) | 2024.07.27 |
---|---|
Langchain과 Flask로 만드는 영화 검색 프로그램 (0) | 2024.07.09 |
LangChain으로 만드는 AI 강아지 이름 생성기 (0) | 2024.07.06 |