txtai: 임베딩 생성 및 검색 등을 위한 All-in-one VectorDB

txtai 소개

txtai 소개

txtai는 벡터 검색, 주제 모델링, 검색 증강 생성(RAG) 등을 포함한 다양한 기능을 제공하는 임베딩을 위한 벡터 데이터베이스(Vector Database for embedding)입니다. 벡터 인덱스, 그래프 네트워크 및 관계형 데이터베이스의 결합으로 구성되어 있으며, SQL을 사용한 벡터 검색, 객체 저장소, 멀티모달 인덱싱 등을 지원합니다. Python, YAML을 통해 구축할 수 있으며, API 바인딩이 다양한 언어(JavaScript, Java, Rust, Go)로 제공됩니다.

또한, txtai는 Hugging Face Transformers, Sentence Transformers 및 FastAPI와 통합되어 있으며, 로컬 실행 또는 컨테이너 오케스트레이션을 통한 확장이 가능합니다. 유사한 기술로는 Milvus, Pinecone, FAISS 등이 있지만, txtai는 SQL과의 통합, 다양한 파이프라인 지원으로 차별화됩니다.

txtai의 주요 특징

  • 벡터 검색: SQL, 객체 저장, 주제 모델링, 그래프 분석 및 멀티모달 인덱싱 지원.

  • 임베딩 생성: 텍스트, 문서, 오디오, 이미지 및 비디오에 대한 임베딩 생성.

  • 파이프라인: LLM 프롬프트 실행, 질문 응답, 라벨링, 전사, 번역, 요약 등을 수행하는 언어 모델 기반 파이프라인.

  • 워크플로우: 파이프라인을 결합하고 비즈니스 로직을 집계하는 워크플로우. txtai 프로세스는 간단한 마이크로서비스 또는 멀티 모델 워크플로우일 수 있음.

  • 개발 환경: Python 또는 YAML로 구축 가능. JavaScript, Java, Rust, Go용 API 바인딩 제공.

  • 운영 환경: 로컬에서 실행하거나 컨테이너 오케스트레이션으로 확장 가능.

txtai 구조

txtai는 벡터 인덱스(희소 및 밀집), 그래프 네트워크 및 관계형 데이터베이스의 결합으로, SQL을 사용한 벡터 검색, 주제 모델링, RAG(검색 강화 생성) 등을 가능하게 합니다. 임베딩 데이터베이스는 독립적으로 존재할 수 있으며, 대규모 언어 모델(LLM) 프롬프트를 위한 강력한 지식 소스로도 활용될 수 있습니다.

모델 가이드

다음 표는 현재 권장하는 모델을 보여줍니다. 이 모델들은 모두 상업적 사용이 가능하며 속도와 성능의 균형을 제공합니다.

구성 요소 모델
임베딩 all-MiniLM-L6-v2
이미지 캡션 BLIP
라벨링(제로 샷) BART-Large-MNLI
라벨링(고정) Fine-tune with training pipeline
대형 언어 모델 Mistral 7B OpenOrca
요약 DistilBART
텍스트-음성 변환 ESPnet JETS
전사 Whisper
번역 OPUS Model Series

활용 사례

의미 검색(시멘틱 검색, Semantic Search)

자연어를 이해하고 같은 의미를 가진 결과를 식별하는 검색 애플리케이션을 구축합니다. 아래에서 예제 노트북을 참고하여 txtai로 시멘틱 검색을 구현하는 방법을 알아보세요:

Notebook Description
Introducing txtai :arrow_forward: Overview of the functionality provided by txtai Open In Colab
Similarity search with images Embed images and text into the same space for search Open In Colab
Build a QA database Question matching with semantic search Open In Colab
Semantic Graphs Explore topics, data connectivity and run network analysis Open In Colab

LLM 오케스트레이션 (LLM Orchestration): Chains

txtai의 LLM Orchestration 예시

다수의 LLM 에이전트 등을 위한 LLM 체인을 구축합니다. 아래에서 예제 노트북을 참고하세요:

Notebook Description
Prompt templates and task chains Build model prompts and connect tasks together with workflows Open In Colab
Integrate LLM frameworks Integrate llama.cpp, LiteLLM and custom generation frameworks Open In Colab
Build knowledge graphs with LLMs Build knowledge graphs with LLM-driven entity extraction Open In Colab

LLM 오케스트레이션 (LLM Orchestration): RAG (Retrieval augmented generation)

LLM의 환각을 줄이고, 기존 지식들을 참고하여 문맥에 기반한 답변을 생성할 수 있습니다. 일반적으로 RAG는 "데이터에 기반한 채팅"으로 사용할 수 있습니다. txtai를 RAG에 사용하는 예시는 아래 예제 노트북을 참고하세요:

Notebook Description
Build RAG pipelines with txtai Guide on retrieval augmented generation including how to create citations Open In Colab
How RAG with txtai works Create RAG processes, API services and Docker instances Open In Colab
Advanced RAG with graph path traversal Graph path traversal to collect complex sets of data for advanced RAG Open In Colab
Advanced RAG with guided generation Retrieval Augmented and Guided Generation Open In Colab

언어 모델 워크플로우 (Language Model Workflows)

추출형 질문 응답, 자동 요약, 음성 인식, 번역 등을 포함한 다양한 태스크에 특화된 모델을 연결하여 지능형 애플리케이션을 구축합니다. 언어 모델 워크플로우에서의 txtai 사용 예시는 아래 예제 노트북을 참고하세요:

Notebook Description
Run pipeline workflows :arrow_forward: Simple yet powerful constructs to efficiently process data Open In Colab
Building abstractive text summaries Run abstractive text summarization Open In Colab
Transcribe audio to text Convert audio files to text Open In Colab
Translate text between languages Streamline machine translation and language detection Open In Colab

txtai 기반 애플리케이션 예시

  • txtchat: Retrieval Augmented Generation (RAG) 기반 검색
  • paperai: 의학/과학 논문에 대한 의미론적 검색 및 워크플로우
  • codequestion: 개발자를 위한 의미론적 검색
  • tldrstory: 헤드라인 및 스토리 텍스트에 대한 의미론적 검색

라이선스

txtai 프로젝트는 Apache 2.0 License로 공개 및 배포되고 있습니다.

:github: txtai GitHub 저장소

:house: txtai 프로젝트 홈페이지




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: