해결된 질문
작성
·
86
·
수정됨
2
Upstage를 사용해도, exceeded 되었다고 에러나서요. 뭔가 최근에 토큰 제한이 줄었나봐요.
아래와 같이 batch를 주어서 반복문으로 요청후 database.add_documents(batch)하는 방식으로 해야되네요 ㅠㅠ
from langchain_pinecone import PineconeVectorStore
# 데이터를 처음 저장할 때
index_name = 'tax-upstage-index'
# Split documents into smaller chunks
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
chunked_documents = text_splitter.split_documents(document_list)
print(f"Chunked documents length: {len(chunked_documents)}")
# Initialize the PineconeVectorStore
database = PineconeVectorStore.from_documents(
documents=[], # Start with an empty list
embedding=embedding,
index_name=index_name
)
# Upload documents in batches
batch_size = 100
for i in range(0, len(chunked_documents), batch_size):
print(f'index: {i}, batch size: {batch_size}')
batch = chunked_documents[i:i + batch_size]
database.add_documents(batch) # Add documents to the existing database
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. vlfl0님.
Pinecone를 사용할 때 토큰 제한으로 인해 문제가 발생하셨군요. 최근 여러 사용자들이 비슷한 문제를 겪고 있으니, 해결 방안을 안내 드리고자 합니다.
PineconeVectorStore
를 통해 대량의 문서 데이터를 다루실 때, 수신 한도를 초과하지 않도록 데이터를 작은 배치로 나누어 보내야 합니다. 현재 코드에서는 이런 배치 처리 로직을 잘 구현하셨네요. 추가적으로 확인 및 개선할 수 있는 부분을 안내드립니다:
배치 크기 조정:
batch_size
를 조정하는 것이 중요합니다. 현재 batch_size
를 100으로 설정하셨는데, 서비스 제공자의 제공 조건에 따라 이 값은 적정하게 설정해야 합니다. 특정 상황에 따라 더 작게 조정해야 할 수도 있습니다.지연 시간 추가:
time.sleep()
을 사용하여 한 배치 처리 후 잠시 대기 시간을 줄 수 있습니다.환경 변수 및 아이디 확인:
Pinecone
API 키나 인덱스 이름이 올바르게 설정되어 있는지 확인하시기 바랍니다. 다양한 환경에서 API를 사용할 경우 미설정된 변수가 문제를 일으킬 수 있습니다.유사한 문제 해결 레퍼런스:
위의 사항을 체크하시면서, 배치로 나누어 업로드 하시면 보다 원활하게 진행할 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.