우리 주변의 모든 것이 점차 데이터 중심으로 변화하고 있는 가운데, Excel은 여전히 비즈니스에 필수적인 도구이며 시트의 데이터에서 귀중한 인사이트를 얻을 수 있는 기능을 제공합니다. 그러나 데이터 과학자와 분석가들은 이러한 방대한 데이터 세트에서 의미 있는 정보를 추출하는 데는 시간이 많이 걸리고 전문 기술이 필요하다는 데 동의합니다. 하지만 생성형 AI와 대규모 언어 모델이 인사이트 생성 프로세스를 간소화하는 데 도움이 될 수 있습니다. 이 프로세스에 도움이 되는 주요 구성 요소는 다음과 같습니다. 검색 증강 생성(RAG).
RAG는 모델이 정보 검색을 통해 외부 사실에 액세스할 수 있도록 함으로써 대규모 언어 모델의 정확도를 높이는 강력한 기술입니다. 일반적으로 대규모 언어 모델(LLM)은 사용자의 입력을 받아 LLM이 학습한 정보(때로는 오래되었거나 부정확할 수 있음)를 기반으로 응답을 제공합니다. RAG는 이 정보를 회사의 지식 기반이나 관련 문서와 같은 보충 데이터와 결합하여 사실에 근거하고 상황에 맞는 정확한 응답을 제공할 수 있습니다.
이 블로그에서는 Excel 데이터를 수집하고 인사이트를 생성하기 위해 특별히 맞춤화된 RAG 시스템을 구축하는 방법을 안내합니다. LlamaIndex와 LlamaParse를 활용하여 스프레드시트를 검색 가능한 지식 베이스로 변환하고 이 데이터를 Couchbase Vector Search에 저장하여 사용자의 쿼리에 따라 관련 컨텍스트를 빠르게 검색한 다음, 다음을 활용할 것입니다. 아마존 베드락 를 사용하여 LLM 응답을 받습니다.
LLamaIndex와 LLamaParse란?
LlamaIndex 은 개발자가 대규모 언어 모델(LLM)로 AI 애플리케이션을 구축할 수 있도록 설계된 오픈 소스 오케스트레이션 프레임워크입니다. 사용자 지정 데이터 소스와 LLM 간의 격차를 해소하는 데 도움이 됩니다. LLamaIndex는 사용자가 파일이나 벡터 데이터베이스와 같은 다양한 소스에서 데이터를 수집한 다음 이 데이터를 중간 표현으로 색인화할 수 있는 기능을 제공합니다. LLamaIndex는 이 데이터를 자연어로 쿼리하고 상호 작용할 수 있는 기능을 제공합니다.
먼저 데이터가 벡터 인덱스로 색인됩니다. 이렇게 하면 해당 도메인과 관련된 검색 가능한 지식창고가 생성됩니다. 쿼리하는 동안 시스템은 사용자의 프롬프트에 따라 관련 정보를 검색한 다음 이 정보를 대규모 언어 모델에 제공하여 응답을 생성합니다.
LlamaParse는 복잡한 문서에서 구조화된 정보를 파싱하고 추출하는 과정을 간소화하는 강력한 문서 파싱 플랫폼으로 설계된 LlamaIndex 에코시스템의 전문 구성 요소입니다. 데이터를 구문 분석하고 정리하여 사용자가 RAG와 같은 LLM 사용 사례를 위한 고품질의 입력을 확보할 수 있도록 구축되었습니다. LlamaParse는 PDF, Excel, HTML 등과 같은 다양한 유형의 문서 구문 분석을 지원합니다.
Excel 데이터로 검색 증강 생성 시스템 구축하기
이 블로그에서는 다음을 활용하여 RAG 시스템을 만들겠습니다. 고객 불만 데이터 세트 (Kaggle 제공). 이 데이터 세트는 다양한 금융 상품과 서비스에 걸친 소비자 불만에 대한 자세한 정보를 제공합니다. 카우치베이스 벡터 검색으로 구동되는 RAG 시스템은 데이터에서 중요한 정보를 쉽게 추출할 수 있게 해줍니다.
데이터 세트의 시각적 표현은 아래에 나와 있습니다.
필수 종속성 설치 및 라마파스 인스턴스화하기
|
1 |
!pip 설치 llama-색인 llama-parse llama-색인-벡터-스토어-카우치베이스 llama-색인-llms-암반 fastembed llama-색인-임베딩-암반 |
종속성을 설치한 후, 이제 파싱 명령어를 사용하여 엑셀 파일을 파싱하는 LlamaParse를 인스턴스화합니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
에서 llama_parse 가져오기 라마파스 에서 구글.colab 가져오기 사용자 데이터 에서 llama_index.핵심 가져오기 SimpleDirectoryReader 가져오기 nest_asyncio nest_asyncio.신청하기() 파서 = 라마파스( api_key=사용자 데이터.get('llama_cloud_api_key'), 파싱_지시 = """고객 불만 데이터 집합을 구문 분석하는 중입니다. 회사 열에 회사 이름이 포함되어 있습니다. 열에서 제품, 하위 제품, 문제, 소비자 불만 서술, 회사 공개 응답, 회사, 주, 우편번호, 정보를 추출하세요."""라고 말합니다., 결과 유형="markdown" ) |
라마파스 객체를 인스턴스화할 때, 우리는 파싱_지시 그리고 결과 유형 로 구문 분석 옵션을 선택합니다.
In 결과 유형를 사용하여 출력 형식을 지정했습니다. 기본적으로 LlamaParse는 결과를 구문 분석된 텍스트로 반환합니다. 사용 가능한 다른 옵션은 다음과 같습니다. 마크다운 그리고 JSON 는 구문 분석된 객체를 나타내는 구조를 반환합니다. In 파싱_지시 를 사용하면 데이터에 대한 추가 컨텍스트를 LlamaParse에 제공할 수 있습니다. LlamaParse는 내부에서 LLM을 사용하여 정보를 구문 분석하는 대상과 방법에 대한 자연어 지침을 제공할 수 있습니다.
다음으로, Excel 파일을 로드하고 LlamaParser를 사용하여 구문 분석합니다:
|
1 2 3 |
파일_추출기 = {".xlsx": 파서} 문서 = SimpleDirectoryReader(입력 파일=[파일_이름.xlsx'], 파일_추출기=파일_추출기).load_data() |
Couchbase 벡터 인덱스를 사용하여 구문 분석된 데이터 저장하기
계속 진행하기 전에 Couchbase Capella에 계정이 있고 Couchbase 내에서 벡터 인덱스를 설정했는지 확인하세요. 벡터 인덱스는 다음 가이드 를 클릭해 클러스터와 벡터 인덱스를 설정합니다. 계정과 인덱스가 준비되면 계속 진행할 수 있습니다.
구문 분석된 데이터는 문서 변수 내에 저장됩니다. 이제 이 변수가 Couchbase 내부에 채워집니다. 이를 위해 문서가 다음과 같이 변환됩니다. 벡터스토어 인덱스. 이 인덱스는 이후 벡터 스토어에서 지원하는 문서를 먼저 베드락 임베딩을 사용하여 변환하여 Couchbase 벡터 스토어에 저장됩니다:
|
1 2 3 4 |
에서 llama_index.llms.암반 가져오기 암반 에서 llama_index.임베딩.암반 가져오기 베드락임베딩 llm = 암반(모델="mistral.mistral-large-2402-v1:0", 지역_이름="us-east-1") 임베딩 = 베드락임베딩(모델="amazon.titan-embed-text-v1") |
또한 Couchbase 인스턴스에 연결합니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def CONNECT_TO_COUCHBASE(연결 문자열, db_username, db_password): """카우치베이스에 연결""" 에서 카우치베이스.클러스터 가져오기 클러스터 에서 카우치베이스.auth 가져오기 비밀번호 인증기 에서 카우치베이스.옵션 가져오기 클러스터 옵션 에서 날짜 시간 가져오기 timedelta auth = 비밀번호 인증기(db_username, db_password) 옵션 = 클러스터 옵션(auth) 연결 문자열 = 연결_문자열 클러스터 = 클러스터(연결 문자열, 옵션) # 클러스터를 사용할 준비가 될 때까지 기다립니다. 클러스터.wait_until_ready(timedelta(초=5)) 반환 클러스터 |
이제 VectorStoreIndex 메서드를 호출하여 Couchbase에 인덱스를 저장하겠습니다. VectorStoreIndex는 문서를 가져와서 노드로 분할합니다. 그런 다음 지정된 임베딩 모델(이 경우에는 Bedrock 임베딩)을 사용하여 모든 노드의 텍스트에 대한 벡터 임베딩을 생성하여 LLM에서 쿼리할 수 있도록 준비합니다.
LlamaIndex는 처리 중인 특정 콘텐츠 유형에 따라 노드를 생성하도록 설계된 다양한 파일 기반 노드 파서를 제공합니다(예: JSON, Markdown 및 기타 형식):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
색인 = 벡터스토어 인덱스.from_documents( 문서, 저장소_컨텍스트=저장소_컨텍스트, ) 벡터_스토어 = get_vector_store( 클러스터, DB_BUCKET, DB_SCOPE, DB_COLLECTION, INDEX_NAME, ) 저장소_컨텍스트 = 스토리지 컨텍스트.from_defaults(벡터_스토어=벡터_스토어) 색인 = 벡터스토어 인덱스.from_documents( 문서, 저장소_컨텍스트=저장소_컨텍스트, ) |
아마존 베드락의 응답 생성
사용자가 Excel 파일을 업로드하면 LlamaParse를 사용하여 파싱한 후 Couchbase 벡터 저장소에 저장합니다. 각 사용자 쿼리에 대해 시스템은 벡터 검색을 수행하여 저장된 Excel 데이터에서 관련 정보 청크를 검색합니다. 그런 다음 이러한 관련 청크는 언어 모델(Bedrock의 미스트랄 모델)의 컨텍스트로 사용되어 응답을 생성합니다.
|
1 2 3 4 |
래그 스트림 응답 = st.세션_상태.채팅_엔진_rag.스트림_채팅(질문) 에 대한 청크 in 래그 스트림 응답.응답_gen: rag_response += 청크 메시지_플레이스홀더.마크다운(rag_response) |
결과
이제 사용자가 제공한 다양한 쿼리에 대한 응답을 검토하여 RAG 애플리케이션의 성능을 확인할 수 있습니다.
결론
이 블로그에서는 방대한 양의 Excel 데이터 분석을 간소화하기 위해 검색 증강 생성(RAG) 시스템을 구축하는 방법을 공유합니다. 이 작업은 데이터에서 정보를 추출하고, LlamaParse를 사용하여 VectorStoreIndex 형식으로 변환한 다음, 이 인덱스를 Couchbase 내에 저장하는 방식으로 처리됩니다.
-
- 시작하기 카우치베이스 카펠라 개발자 플랫폼 무료
- 다음에 대한 더 많은 게시물과 자습서를 읽어보세요. 생성 AI(GenAI)
- LLM 임베딩에 대해 자세히 알아보기