txtai Embeddings API

txtai Embeddings API

txtai의 Embeddings 클래스는 시맨틱 검색 엔진 자체예요. 데이터를 벡터로 변환하고, 색인한 뒤 비슷한 의미를 가진 결과를 찾아주는 일을 담당해요.

출처: txtai Methods

Embeddings는 시맨틱 검색을 제공하는 엔진이에요. 데이터가 임베딩 벡터로 변환되면서, '비슷한 개념'이 '비슷한 벡터'를 만들게 돼요. 이 벡터들로 크고 작은 인덱스를 만들고, 그 인덱스는 '같은 의미(not necessarily the same keywords)'를 가진 결과를 찾는 데 쓰여요.

Embeddings 클래스의 생성 시그니처를 보면 설정과 모델 캐시를 받아요.

class Embeddings:
    def __init__(self, config=None, models=None, **kwargs):

인덱스는 읽기 연산엔 스레드 안전하지만, 쓰기 연산은 동기화가 필요하다는 점을 기억해 두면 좋아요. 주요 메서드를 살펴볼게요.

  • index(documents, ...) — 문서를 벡터로 변환하고 ANN(근사 최근접 이웃) 인덱스를 만들어요. Faiss가 기본 백엔드예요.
  • upsert(documents, ...) — 인덱스가 있으면 새 데이터를 추가하고, 같은 데이터는 갱신해요.
  • search(query, limit=None, ...) — 입력 쿼리와 가장 비슷한 문서를 찾아요. 인덱스 검색, 인덱스+DB 검색, 그래프 검색 중 설정에 따라 동작해요.
  • batchsearch(queries, ...) — 검색을 여러 쿼리로 배치 처리해요.
  • transform(document, ...) / batchtransform(...) — 문서를 임베딩 벡터로 변환해요.
  • load(path, ...) — 기존 인덱스를 설정·클라우드 저장소에서 불러와요.

search의 반환은 설정에 따라 달라져요. 인덱스만 있으면 (id, score) 목록, 인덱스+DB면 dict 목록, 그래프 검색이면 그래프 결과를 반환해요. 임베딩 저장을 켜면(content) 입력 콘텐츠가 벡터 옆 데이터베이스에 저장돼, 추가 필드 필터링이나 콘텐츠 검색이 가능해져요.

더 알아보기