데이터베이스 조회 및 업데이트

OpenAI API로 시작하는 임베딩 Introduction

Emmanuel Pire

Senior Software Engineer, DataCamp

데이터베이스 조회

"노래가 많이 나오는 영화"라는 쿼리가 임베딩 모델에 입력되고, 코사인 거리가 계산되어 최종 결과가 저장됩니다.

OpenAI API로 시작하는 임베딩 Introduction

데이터베이스 조회

검색 쿼리가 벡터 데이터베이스에 직접 입력되어 임베딩되며, 데이터베이스에는 이미 문서 임베딩이 저장되어 있습니다.

OpenAI API로 시작하는 임베딩 Introduction

컬렉션 가져오기

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • 데이터 추가 시 사용한 동일한 임베딩 함수를 지정해야 함
OpenAI API로 시작하는 임베딩 Introduction

컬렉션 조회

result = collection.query(
  query_texts=["movies where people sing a lot"],
  n_results=3
)
print(result)
{'ids': [['s4068', 's293', 's2213']],
 'embeddings': None,
 'documents': [['Title: Quién te cantará (Movie)\nDescription: When a near-...',
   'Title: Quartet (Movie)\nDescription: To save their posh retirement home, ...',
   'Title: Sing On! Spain (TV Show)\nDescription: In this fast-paced, high-...']],
 'metadatas': [[None, None, None]],
 'distances': [[0.350419282913208, 0.36049118638038635, 0.37080681324005127]]
OpenAI API로 시작하는 임베딩 Introduction

query()는 여러 키를 포함하는 딕셔너리를 반환합니다:

  • ids: 반환된 항목의 ID
  • embeddings: 반환된 항목의 임베딩
  • documents: 반환된 항목의 원본 텍스트
  • metadatas: 반환된 항목의 메타데이터
  • distances: 쿼리 텍스트로부터의 거리
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
OpenAI API로 시작하는 임베딩 Introduction

쿼리 텍스트와 생성된 세 쿼리 결과의 ID가 강조 표시되어 있습니다.

  • 첫 번째 리스트는 첫 번째 query_text에 해당
  • 여러 query_text를 지정하면 여러 리스트가 반환됨
OpenAI API로 시작하는 임베딩 Introduction

쿼리 결과의 ID와 관련 문서, 메타데이터, 거리가 강조 표시되어 있습니다.

OpenAI API로 시작하는 임베딩 Introduction

컬렉션 업데이트

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • 업데이트할 필드_만_ 포함하면 나머지 필드는 유지됨
  • 컬렉션이 자동으로 임베딩을 생성함
OpenAI API로 시작하는 임베딩 Introduction

컬렉션 Upsert

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • ID가 없으면 → 추가
  • ID가 있으면 → 업데이트
OpenAI API로 시작하는 임베딩 Introduction

삭제

컬렉션에서 항목 삭제

collection.delete(ids=["id-1", "id-2"])

 

모든 컬렉션 및 항목 삭제

client.reset()
  • 경고: 데이터베이스의 모든 데이터가 삭제됩니다!
OpenAI API로 시작하는 임베딩 Introduction

연습해 봅시다!

OpenAI API로 시작하는 임베딩 Introduction

Preparing Video For Download...