Chroma에 데이터 추가 — .add와 .upsert로 문서 넣기
Chroma에 데이터 추가 — .add와 .upsert로 문서 넣기
컬렉션에 데이터를 넣는 가장 기본적인 방법은 .add 예요. 레코드마다 고유한 문자열 id가 필요하고, documents와 embeddings 중 하나 이상은 반드시 제공해야 하며 metadatas는 항상 선택입니다.
.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 — 있으면 갱신, 없으면 추가
.upsert는 id가 이미 존재하면 그 레코드를 갱신하고, 없으면 새로 추가해요. 스크립트를 반복 실행하는 RAG 파이프라인에서 중복을 피하려면 add 대신 upsert를 쓰는 게 안전합니다.
Chroma는 여러 방식으로 데이터를 관리할 수 있는데, id를 기준으로 최대 레코드 수를 정하는 collection limits 설정도 지원해요. 이렇게 하면 무한정 커지는 컬렉션을 방지할 수 있습니다.
더 알아보기
- 데이터 삭제는 Delete Data 참고
- 데이터 갱신은 Update Data 참고
- 멀티모달 데이터 추가는 Multimodal Embeddings 참고