토니의 연습장
db.add_documents() 특징 본문
# db에 없는 문서만 추가
new_chunks = []
for chunk in chunks_with_ids:
if chunk.metadata["id"] not in existing_ids:
new_chunks.append(chunk)
if len(new_chunks):
print(f"👉 Adding new documents: {len(new_chunks)}")
new_chunk_ids = [chunk.metadata["id"] for chunk in new_chunks]
db.add_documents(new_chunks, ids=new_chunk_ids)
db.persist()
1. 동작 원리
- new_chunks는 새로 추가할 문서(청크)의 리스트입니다.
- new_chunk_ids는 각 문서와 매핑될 고유 ID의 리스트입니다.
- db.add_documents() 메서드는 new_chunks와 new_chunk_ids를 같은 인덱스에 따라 하나씩 매칭하여 데이터베이스에 저장합니다.
2. add_documents() 내부 동작
- add_documents()는 두 리스트(new_chunks, new_chunk_ids)를 인덱스 순서에 따라 처리합니다.
- 예를 들어:
- new_chunks[i]는 new_chunk_ids[i]와 연결됩니다.
- new_chunks[0]의 문서는 new_chunk_ids[0]의 ID를 가지게 됩니다.
3. 매칭 조건
new_chunks와 new_chunk_ids가 정확히 같은 길이여야 합니다.
만약 길이가 다르면 오류가 발생합니다.
4. 결론
- new_chunks의 각 문서는 new_chunk_ids의 해당 ID와 1:1로 매칭됩니다.
- 두 리스트는 같은 길이를 가져야 하며, 순서대로 데이터베이스에 추가됩니다.
- db.add_documents()는 내부적으로 이 매칭을 처리하고 저장합니다.
5. 추천 디버깅 팁
만약 매칭이 제대로 되었는지 확인하고 싶다면, zip()을 활용하여 매칭 관계를 출력할 수 있습니다:
'언어 AI (NLP) > LLM & RAG & Agent' 카테고리의 다른 글
RAG 중복문장 제거 (0) | 2025.02.15 |
---|---|
gguf/safetensor 로 ollama 모델 만들기 (0) | 2025.02.11 |
RAG 단계 요약 (0) | 2025.02.06 |
SFT 와 RLHF (3) | 2025.02.04 |
ollama 참고 (1) | 2025.01.23 |