Oracle AI Vector DB 및 OCI GenAI를 Llama-index와 LangChain에 통합하기
요약
본 기사는 Oracle AI Vector DB와 OCI GenAI 서비스를 Llama-index 및 LangChain 프레임워크에 통합하여 지식 비서(Knowledge Assistant)를 구축하는 방법을 안내합니다. 이를 통해 RAG 애플리케이션을 개발할 수 있으며, 의미 검색과 Reranking 기능을 활용해 정확도를 높일 수 있습니다.
핵심 포인트
- Oracle AI Vector Search와 Oracle DB 23c의 통합이 핵심입니다.
- Llama-index 및 LangChain을 사용하여 RAG 파이프라인을 구축합니다.
- Reranking 기능 추가로 검색 결과의 품질과 신뢰성을 향상시킵니다.
- 지식 비서 구현 시 참조 표시(Citation) 기능을 지원합니다.
Oracle AI Vector DB 및 OCI GenAI를 Llama-index와 LangChain에 통합하기
다음 예제를 사용하여 구축할 수 있는 **지식 비서(Knowledge Assistant)**의 UI.

이 저장소에는 다음을 사용하여 RAG 애플리케이션 개발에 수행된 모든 작업이 포함되어 있습니다:
- Oracle AI Vector Search
- Oracle OCI GenAI Service
- Oracle OCI Embeddings
- Cohere Reranking
- OCI Data Science에 배포된 Reranker 모델
- OCI ADS 2.10.0 (OCI GenAI 지원)
- llama-index
- LangChain
Wiki의 Video demos 섹션에서 데모 비디오를 찾을 수 있습니다.
RAG란 무엇인가?
검색 증강 생성(Retrieval Augmented Generation) (RAG)에 대한 아주 좋은 소개는 여기에서 찾을 수 있습니다.
기능
- **Oracle DB Vector Store (23c)**와 llama-index 간의 기본(12/2023) 통합
- 모든 문서는 Oracle DB에 저장됨
- 의미 검색(Semantic Search)을 위해 Oracle AI Vector Search 사용
- 검색 개선을 위한 Reranking
- 참조 표시 방법 (응답 생성에 사용된 문서)
- (12/30) OCI Model Deployment로 구현된 reranker 추가
- (01/20) LangChain용 Vector Store 구현 및 데모 추가
- 문서 내 중복 항목 찾기
- (2024/03/02) 관측 가능성(observability)을 위한 Phoenix Traces 추가
데모
- demo1: 이 노트북은 Oracle Database와 23c의 새로운 기능에 대한 질문 답변을 보여주는 데모입니다.
- demo2: NIH의 공개 문서를 사용하여 의학(Covid19) 분야의 QA 데모를 보여줍니다.
- Bot: Oracle Vector DB와 OCI GenAI로 구동됩니다.
- demo3: RAG 체인에 Reranker를 추가하는 방법을 보여주며, 저는 Cohere를 사용했습니다.
- demo5: OCI DS에서 Reranker가 배포되는 전체 RAG 체인을 보여줍니다.
- LangChain: Oracle Vector DB와 LangChain을 기반으로 한 데모입니다.
- finding duplicates:
- Knowledge assistant full demo:
설정(Setup)
wiki 페이지를 참조하세요.
데이터 로딩
- Oracle DB 스키마의 모든 데이터를 불러오려면 create_save_embeddings를 사용할 수 있습니다.
- 스크립트 load_books를 사용하여 실행할 수 있습니다.
- 로드할 파일 목록은 config.py 파일에 지정되어 있습니다.
동일한 디렉터리에 pdf 파일을 가지고 있어야 합니다.
제한적 사용 가능(Limited Availability)
- (뉴스) **OCI GenAI는 2024년 1월 23일부터 일반 사용 가능(General Availability)**합니다. 설정은 업데이트된 문서를 참조하세요.
Oracle의 AI Vector Search (Vector DB)는 Oracle DB 23c의 새로운 기능으로, 현재 제한적 사용 가능(Limited Availability) 상태입니다.
고객들은 LA 프로그램에 쉽게 등록할 수 있습니다.
이러한 기능을 테스트하려면 LA 프로그램에 등록하고 적절한 버전의 소프트웨어 라이브러리를 설치해야 합니다.
코드와 기능은 고객 피드백에 따라 변경될 수 있습니다.
데모에 사용된 릴리스
- OCI 2.119.1
- OCI ADS 2.10.0
- LangChain >= 0.1.4
- LangChain Community >= 0.0.16
- Llama-index >= 0.9.37.post1 < 0.10
- Oracle Database 23c (23.4) free edition with Vector DB
위키의 Setup 섹션에 있는 지침을 사용하여 전체 Python 환경을 설치할 수 있습니다.
라이브러리
- OCI Python SDK
- OCI ADS
- oracledb
- Streamlit
- Llama-index
- LangChain
- Arize-AI/phoenix (관측성 및 추적)
문서
임베딩(Embeddings)
RAG의 핵심 요소 중 하나는 검색(Retrieval) 모듈입니다.
**DB 벡터 스토어(DB Vector Store)**를 사용하려면 **임베딩 모델(Embeddings Model)**이 필요합니다. 이 모델은 텍스트를 벡터로 변환하는 마법을 수행하여, 텍스트의 내용과 의미론적 정보를 포착합니다.
여기서 데모에 사용된 임베딩 모델은 OCI GenAI 서비스에서 제공되는 Cohere Embeds V3입니다.
몇 가지 변경만으로 오픈 소스 모델을 사용하는 방식으로 전환할 수 있습니다. 하지만 이를 실행할 컴퓨팅 파워가 필요합니다.
관측성(Observability)
(2024년 2월 3일) Arize Phoenix (Phoenix 추적) 통합 기능을 추가했습니다.
config.py에서 추적을 활성화하려면 ADD_PHX_TRACING = True로 설정해야 합니다.
OpenTelemetry 설치에 문제가 발생하는 경우, 이를 비활성화하는 것이 빠른 해결책입니다.
팩토리 메서드(Factory methods)
prepare_chain 모듈에는 다음을 생성하기 위한 팩토리 메서드가 정의되어 있습니다: 임베더(embedder), LLM, 리랭커(reranker)...
이 철학은 사물을 더 단순하게 만드는 것입니다. 따라서 모든 설정은 config.py에서 가져옵니다.
LLM이나 다른 것을 변경하고 싶다면 config.py로 이동하세요. NBs에는 매개변수가 없습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기