1. 커서 AI에 대한 간단한 신문 기사를 텍스트 파일로 만든 후 해당 파일을 읽어서 랭체인에서 RAG를 구현한다.
2. Ollama를 사용한다.
# 파일 읽어오기
from langchain.document_loaders import TextLoader
documents = TextLoader("../datas/rag_data.txt", encoding='utf-8').load()
from langchain.text_splitter import RecursiveCharacterTextSplitter
# 문서를 청크로 분할
def split_docs(documents, chunk_size=1000, chunk_overlap=20):
text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)
docs = text_splitter.split_documents(documents)
return docs
# docs 변수에 분할 문서를 저장
docs = split_docs(documents)
# Ollama 임베딩 모델 사용
from langchain_ollama import OllamaEmbeddings
# 'mistral' 또는 'llama2', 'gemma' 등 Ollama에서 지원하는 임베딩 가능한 모델 사용
embeddings = OllamaEmbeddings(model="llama3-ko")
# 벡터 저장소에 문서 저장, 저장 장소는 현재 위치 ./
from langchain.vectorstores import Chroma
db = Chroma.from_documents(docs, embeddings, persist_directory="./")
from langchain_ollama import ChatOllama
from langchain.chains.question_answering import load_qa_chain
# Ollama 모델 (예: mistral, llama3 등) 선택 - 한국어를 위해 llama3-ko 사용
llm = ChatOllama(model="llama3-ko")
chain = load_qa_chain(llm, chain_type="stuff") # 'stuff'는 모든 문서를 한 번에 처리하는 방식, verbose=True
# 질문 정의 - 한국어 모델이지만 영어로 답변하는 경우가 있어서...
query = "AI가 할 수 있는 일은 어떤 것이 있지? 결과는 한국어로 답해줘"
# Chroma 벡터DB에서 관련 문서 검색
matching_docs = db.similarity_search(query)
# 문서 기반 질문 응답 실행
answer = chain.run(input_documents=matching_docs, question=query)
# 결과 출력
print("*" * 50)
print(answer)
**************************************************
커서 AI는 다음과 같은 일들을 할 수 있습니다. * 웹 서비스를 제작해주는 기술 * 복잡한 코딩 없이도 다양한 업무 자동화와 도구 제작이 가능 * 투두 리스트, 설문조사 폼, 명함 제작, SNS 클론, 챗봇 제작, 유튜브 영상 요약, 카드뉴스 생성 등 실습 예시 다양 * 뉴스·부동산 정보 크롤링, 고객 리뷰 자동화, PDF 분석, 견적 비교, 엑셀 자동화 등 반복 업무를 AI로 처리하는 구체적 사례 이러한 기능으로 인해, 커서 AI는 다양한 업무 자동화와 도구 제작을 가능하게 하는 기술입니다.