Chroma에 데이터 추가 — .add와 .upsert로 문서 넣기

Chroma에 데이터 추가 — .add와 .upsert로 문서 넣기

컬렉션에 데이터를 넣는 가장 기본적인 방법은 .add 예요. 레코드마다 고유한 문자열 id가 필요하고, documentsembeddings 중 하나 이상은 반드시 제공해야 하며 metadatas는 항상 선택입니다.

출처: https://docs.trychroma.com/docs/collections/add-data

.add로 새 레코드 추가

collection.add(
    ids=["id1", "id2", "id3"],
    documents=["lorem ipsum...", "doc2", "doc3"],
    metadatas=[{"chapter": 3, "verse": 16}, {"chapter": 3, "verse": 5}, {"chapter": 29, "verse": 11}],
)

documents만 넘기면 컬렉션의 임베딩 함수가 알아서 임베딩을 만들어 줍니다. 반대로 이미 임베딩을 계산해 뒀다면 embeddings를 함께 넘기면 되고, 이 경우 Chroma는 재임베딩 없이 두 값을 그대로 저장해요.

collection.add(
    ids=["id1", "id2", "id3"],
    embeddings=[[1.1, 2.3, 3.2], [4.5, 6.9, 4.4], [1.1, 2.3, 3.2]],
    documents=["doc1", "doc2", "doc3"],
    metadatas=[{"chapter": 3, "verse": 16}, {"chapter": 3, "verse": 5}, {"chapter": 29, "verse": 11}],
)

.upsert — 있으면 갱신, 없으면 추가

.upsertid가 이미 존재하면 그 레코드를 갱신하고, 없으면 새로 추가해요. 스크립트를 반복 실행하는 RAG 파이프라인에서 중복을 피하려면 add 대신 upsert를 쓰는 게 안전합니다.

Chroma는 여러 방식으로 데이터를 관리할 수 있는데, id를 기준으로 최대 레코드 수를 정하는 collection limits 설정도 지원해요. 이렇게 하면 무한정 커지는 컬렉션을 방지할 수 있습니다.

더 알아보기