이번 게시물에서는 Llama2 모델을 사용하여 Excel 데이터를 지능적으로 쿼리하는 챗봇을 구축한 방법을 설명하겠습니다.
파이썬(≥ 3.8)
라이브러리: langchain, pandas, unstructured, Chroma
%pip install -q unstructured langchain %pip install -q "unstructured[all-docs]"
import pandas as pd excel_path = "Book2.xlsx" if excel_path: df = pd.read_excel(excel_path) data = df.to_string(index=False) else: print("Upload an Excel file")
대용량 텍스트 데이터는 효과적인 삽입 및 쿼리를 위해 더 작고 겹치는 덩어리로 분할됩니다. 이러한 청크는 Chroma 벡터 데이터베이스에 저장됩니다.
from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_community.embeddings import OllamaEmbeddings from langchain_community.vectorstores import Chroma text_splitter = RecursiveCharacterTextSplitter(chunk_size=7500, chunk_overlap=100) chunks = text_splitter.split_text(data) embedding_model = OllamaEmbeddings(model="nomic-embed-text", show_progress=False) vector_db = Chroma.from_texts( texts=chunks, embedding=embedding_model, collection_name="local-rag" )
ChatOllama를 사용하여 Llama2 모델을 로컬로 로드합니다.
from langchain_community.chat_models import ChatOllama local_model = "llama2" llm = ChatOllama(model=local_model)
챗봇은 Excel 파일의 특정 열 이름을 기반으로 응답합니다. 모델을 안내하는 프롬프트 템플릿을 만듭니다
from langchain.prompts import PromptTemplate QUERY_PROMPT = PromptTemplate( input_variables=["question"], template="""You are an AI assistant. Answer the user's questions based on the column names: Id, order_id, name, sales, refund, and status. Original question: {question}""" )
Llama2 모델이 질문에 답하는 데 사용할 벡터 데이터베이스에서 관련 청크를 가져오도록 검색기를 구성합니다.
from langchain.retrievers.multi_query import MultiQueryRetriever retriever = MultiQueryRetriever.from_llm( vector_db.as_retriever(), llm, prompt=QUERY_PROMPT )
응답 체인은 다음을 통합합니다.
from langchain.prompts import ChatPromptTemplate from langchain_core.runnables import RunnablePassthrough from langchain_core.output_parsers import StrOutputParser template = """Answer the question based ONLY on the following context: {context} Question: {question} """ prompt = ChatPromptTemplate.from_template(template) chain = ( {"context": retriever, "question": RunnablePassthrough()} | prompt | llm | StrOutputParser() )
이제 질문할 준비가 되었습니다! 응답을 얻기 위해 체인을 호출하는 방법은 다음과 같습니다.
raw_result = chain.invoke("How many rows are there?") final_result = f"{raw_result}\n\nIf you have more questions, feel free to ask!" print(final_result)
샘플 Excel 파일에서 위 코드를 실행했을 때 얻은 결과는 다음과 같습니다.
Based on the provided context, there are 10 rows in the table. If you have more questions, feel free to ask!
이 접근 방식은 임베딩과 Llama2 모델의 강력한 기능을 활용하여 Excel 데이터용 스마트 대화형 챗봇을 만듭니다. 약간의 조정을 통해 이를 확장하여 다른 유형의 문서와 함께 작동하거나 완전한 앱에 통합할 수 있습니다!
BChat Excel 소개: Excel 파일 상호 작용을 위한 대화형 AI 기반 도구
위 내용은 Excel을 사용하여 LlamaChat으로 간단한 챗봇 구축]의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!