토니의 연습장

db.add_documents() 특징 본문

언어 AI (NLP)/LLM & RAG & Agent

db.add_documents() 특징

bellmake 2025. 2. 6. 15:04
 # 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