ChatGpt의 vector store로 Yellowbrick 사용하기
이 튜토리얼은 Retrieval Augmented Generation (RAG)을 지원하기 위해 Yellowbrick를 vector store로 사용하는 ChatGpt 기반의 간단한 챗봇을 만드는 방법을 보여줍니다. 필요한 것:- Yellowbrick sandbox 계정
- OpenAI의 api key
Setup: Yellowbrick 및 OpenAI API 연결에 사용되는 정보 입력
우리의 챗봇은 langchain 라이브러리를 통해 ChatGpt와 통합되므로, 먼저 OpenAI의 API key가 필요합니다: OpenAI의 api key를 얻으려면:- platform.openai.com/에서 등록
- 결제 수단 추가 - 무료 할당량을 초과할 가능성은 낮습니다
- API key 생성
Part 1: Vector Store 없이 ChatGpt 기반의 기본 챗봇 만들기
langchain을 사용하여 ChatGPT를 쿼리합니다. Vector Store가 없으므로 ChatGPT는 질문에 답할 컨텍스트가 없습니다.Part 2: Yellowbrick에 연결하고 embedding 테이블 생성
문서 embeddings를 Yellowbrick에 로드하려면 저장할 자체 테이블을 생성해야 합니다. 테이블이 있는 Yellowbrick 데이터베이스는 UTF-8로 인코딩되어야 합니다. 다음 스키마로 UTF-8 데이터베이스에 테이블을 생성하고, 원하는 테이블 이름을 제공하세요:Part 3: Yellowbrick의 기존 테이블에서 인덱싱할 문서 추출
기존 Yellowbrick 테이블에서 문서 경로와 내용을 추출합니다. 다음 단계에서 이 문서들을 사용하여 embeddings를 생성합니다.Part 4: 문서로 Yellowbrick Vector Store 로드
문서를 처리하고, 소화 가능한 청크로 분할하고, embedding을 생성하여 Yellowbrick 테이블에 삽입합니다. 약 5분 정도 걸립니다.Part 5: Yellowbrick를 vector store로 사용하는 챗봇 만들기
다음으로, Yellowbrick를 vector store로 추가합니다. vector store는 Yellowbrick 제품 문서의 관리 챕터를 나타내는 embeddings로 채워졌습니다. 개선된 응답을 확인하기 위해 위와 동일한 쿼리를 보냅니다.Part 6: 성능 향상을 위한 Index 도입
Yellowbrick는 Locality-Sensitive Hashing 접근 방식을 사용한 인덱싱도 지원합니다. 이는 근사 최근접 이웃 검색 기법으로, 정확도를 희생하여 유사성 검색 시간을 절충할 수 있습니다. index는 두 가지 새로운 조정 가능한 매개변수를 도입합니다:- hyperplane의 수는
create_lsh_index(num_hyperplanes)에 인수로 제공됩니다. 문서가 많을수록 더 많은 hyperplane이 필요합니다. LSH는 차원 축소의 한 형태입니다. 원본 embeddings는 구성 요소의 수가 hyperplane의 수와 동일한 저차원 벡터로 변환됩니다. - Hamming distance는 검색 범위를 나타내는 정수입니다. Hamming distance가 작을수록 검색 속도는 빠르지만 정확도는 낮아집니다.
Next Steps
이 코드는 다른 질문을 하도록 수정할 수 있습니다. vector store에 자신의 문서를 로드할 수도 있습니다. langchain 모듈은 매우 유연하며 다양한 파일(HTML, PDF 등 포함)을 파싱할 수 있습니다. 완전히 프라이빗한 챗박스 경험을 위해 Huggingface embeddings 모델과 Meta의 Llama 2 LLM을 사용하도록 수정할 수도 있습니다.Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.