안녕하세요.
482
작성한 질문수 2
from langchain_chroma import Chroma
# 데이터를 처음 저장할 때
database = Chroma.from_documents(documents=document_list, embedding=embedding)다음 코드를 실행시키면,
File c:\Dev\inflearn-llm-application\lib\site-packages\langchain_chroma\vectorstores.py:1089, in Chroma.from_texts(cls, texts, embedding, metadatas, ids, collection_name, persist_directory, client_settings, client, collection_metadata, **kwargs) 1083 chroma_collection.add_texts(
...
--> 571 raise ValueError( 572 f"Batch size {len(batch[0])} exceeds maximum batch size {limits['max_batch_size']}" 573 ) ValueError: Batch size 218 exceeds maximum batch size 166
다음과 같은 error가 발생합니다.
이후 다음과 같이 batch size를 줄여서 실행시키면
from langchain_chroma import Chroma
# 배치 크기 설정
batch_size = 166
# 문서 리스트를 배치 크기만큼 나누어 처리
for i in range(0, len(document_list), batch_size):
batch_documents = document_list[i:i + batch_size]
database = Chroma.from_documents(documents=batch_documents, embedding=embedding)
다음과 같은 오류와 함께 커널이 종료됩니다ㅠ
해결책이 있을까요?
답변 3
0
안녕하세요, 말씀하신 에러는 embedding문제는 아니고, chroma에서 한번에 처리할 수 있는 문서의 제한이 있어서 발생하는 것 같습니다. batch_size를 max에 맞추지 말고, 50정도로 잘라서 한번 시도해보시죠~
0
https://www.inflearn.com/community/questions/1351563
같은 문제를 겪으셨던 분이 해결하신 방법입니다!
0
올려주신 질문 참조해서 새로 파일을 만들고, jupyter notebook 환경에서도 진행해 보았는데도 오류가 나네요..
구체적으로는
from langchain_chroma import Chroma
database = Chroma.from_documents(
documents=document_list,
embedding=embedding,
collection_name='chroma-tax',
persist_directory="./chroma"
)
다음과 같은 코드를 실행하였을때는
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[8], line 5
1 from langchain_chroma import Chroma
----> 5 database = Chroma.from_documents(
6 documents=document_list,
7 embedding=embedding,
8 collection_name='chroma-tax',
9 persist_directory="./chroma"
10 )
13 # # 이미 저장된 데이터를 사용할 때
14 # database = Chroma(collection_name='chroma-tax', persist_directory="./chroma", embedding_function=embedding)
File ~\LLM_ROOT\L_virutl\lib\site-packages\langchain_chroma\vectorstores.py:1128, in Chroma.from_documents(cls, documents, embedding, ids, collection_name, persist_directory, client_settings, client, collection_metadata, **kwargs)
1126 texts = [doc.page_content for doc in documents]
1127 metadatas = [doc.metadata for doc in documents]
-> 1128 return cls.from_texts(
1129 texts=texts,
1130 embedding=embedding,
1131 metadatas=metadatas,
1132 ids=ids,
1133 collection_name=collection_name,
1134 persist_directory=persist_directory,
1135 client_settings=client_settings,
1136 client=client,
1137 collection_metadata=collection_metadata,
1138 **kwargs,
1139 )
File ~\LLM_ROOT\L_virutl\lib\site-packages\langchain_chroma\vectorstores.py:1089, in Chroma.from_texts(cls, texts, embedding, metadatas, ids, collection_name, persist_directory, client_settings, client, collection_metadata, **kwargs)
1083 chroma_collection.add_texts(
1084 texts=batch[3] if batch[3] else [],
1085 metadatas=batch[2] if batch[2] else None, # type: ignore
1086 ids=batch[0],
1087 )
1088 else:
-> 1089 chroma_collection.add_texts(texts=texts, metadatas=metadatas, ids=ids)
1090 return chroma_collection
File ~\LLM_ROOT\L_virutl\lib\site-packages\langchain_chroma\vectorstores.py:544, in Chroma.add_texts(self, texts, metadatas, ids, **kwargs)
542 raise ValueError(e.args[0] + "\n\n" + msg)
543 else:
--> 544 raise e
545 if empty_ids:
546 texts_without_metadatas = [texts[j] for j in empty_ids]
File ~\LLM_ROOT\L_virutl\lib\site-packages\langchain_chroma\vectorstores.py:530, in Chroma.add_texts(self, texts, metadatas, ids, **kwargs)
528 ids_with_metadata = [ids[idx] for idx in non_empty_ids]
529 try:
--> 530 self._collection.upsert(
531 metadatas=metadatas, # type: ignore
532 embeddings=embeddings_with_metadatas, # type: ignore
533 documents=texts_with_metadatas,
534 ids=ids_with_metadata,
535 )
536 except ValueError as e:
537 if "Expected metadata value to be" in str(e):
File ~\LLM_ROOT\L_virutl\lib\site-packages\chromadb\api\models\Collection.py:302, in Collection.upsert(self, ids, embeddings, metadatas, documents, images, uris)
281 """Update the embeddings, metadatas or documents for provided ids, or create them if they don't exist.
282
283 Args:
(...)
290 None
291 """
292 (
293 ids,
294 embeddings,
(...)
299 ids, embeddings, metadatas, documents, images, uris
300 )
--> 302 self._client._upsert(
303 collection_id=self.id,
304 ids=ids,
305 embeddings=embeddings,
306 metadatas=metadatas,
307 documents=documents,
308 uris=uris,
309 )
File ~\LLM_ROOT\L_virutl\lib\site-packages\chromadb\telemetry\opentelemetry\__init__.py:146, in trace_method.<locals>.decorator.<locals>.wrapper(*args, **kwargs)
144 global tracer, granularity
145 if trace_granularity < granularity:
--> 146 return f(*args, **kwargs)
147 if not tracer:
148 return f(*args, **kwargs)
File ~\LLM_ROOT\L_virutl\lib\site-packages\chromadb\api\segment.py:452, in SegmentAPI._upsert(self, collection_id, ids, embeddings, metadatas, documents, uris)
450 coll = self._get_collection(collection_id)
451 self._manager.hint_use_collection(collection_id, t.Operation.UPSERT)
--> 452 validate_batch(
453 (ids, embeddings, metadatas, documents, uris),
454 {"max_batch_size": self.get_max_batch_size()},
455 )
456 records_to_submit = list(
457 _records(
458 t.Operation.UPSERT,
(...)
464 )
465 )
466 self._validate_embedding_record_set(coll, records_to_submit)
File ~\LLM_ROOT\L_virutl\lib\site-packages\chromadb\api\types.py:571, in validate_batch(batch, limits)
560 def validate_batch(
561 batch: Tuple[
562 IDs,
(...)
568 limits: Dict[str, Any],
569 ) -> None:
570 if len(batch[0]) > limits["max_batch_size"]:
--> 571 raise ValueError(
572 f"Batch size {len(batch[0])} exceeds maximum batch size {limits['max_batch_size']}"
573 )
ValueError: Batch size 220 exceeds maximum batch size 166
이처럼 배치 사이즈 초과 메시지가 뜨고,,
from langchain_chroma import Chroma
# 배치 크기 설정
batch_size = 166
# 문서 리스트를 배치 크기만큼 나누어 처리
for i in range(0, len(document_list), batch_size):
batch_documents = document_list[i:i + batch_size]
database = Chroma.from_documents(documents=batch_documents, embedding=embedding)
추가로 이처럼 배치 사이즈를 줄여 실행하니

이처럼 커널이 죽게 됩니다..
0
추가로, 환경 변수를 불러오는 설정에서는,
import os
from dotenv import load_dotenv
from langchain_openai import OpenAIEmbeddings
# .env 파일에서 환경변수 불러오기
load_dotenv()
# 환경변수를 불러옴
api_key= os.getenv("OPEN_API_KEY")
# OpenAI에서 제공하는 Embedding Model을 활용해서 chunk를 vector화
embedding = OpenAIEmbeddings(api_key=api_key, model='text-embedding-3-large')
OpenAIEmbeddings안의 매개변수로, api_key가 필요하다 해서 이처럼 전의 OPEN_API_KEY 값을 넣었습니다.
이 부분도 강의와 상이하여 혹시 몰ㄹ ㅏ첨부합니다. 감사합니다!!
소득세법 docx 파일 공유 요청건
0
64
1
EXAONE 모델 불러오기 안되는 문제
0
87
2
[5.1 강의] LLM Evaluator에 Upstage를 사용하는 방법 + 변경된 Langsmith Docs를 참고하여 구현하는 방법 공유
0
102
2
강의 9에 QA관련된 import가 되지 않네요
0
110
2
🚨 python3.14 를 쓰고 계시면 chroma 에서 ConfigError 가 발생합니다.
1
199
1
강의와 책 관련 질문
0
86
1
문서 전처리 고민
0
110
1
RAG 배포 질문드립니다
0
94
1
강의 내용과는 별개로 궁금한 점이 있습니다
0
88
2
폐쇄망 챗봇 모델
0
93
1
AI agent 쿠폰
0
94
2
저는 왜 그대로 했는데 답변이 틀리게 나오는지 모르겠네요
0
101
2
langchain howto/sequence는 지금 doc 공식 사이트 어디서 확인할 수 있나요?
1
94
1
new_question에 대한 답 출력
0
73
2
랭체인 라이브러리
0
147
2
[LangGraph를 활용한 AI Agent 개발] 쿠폰 유효기간
0
105
1
postgresql의 pgvector 벡터는 어떤가요?
0
343
2
doc관련
0
127
2
load_dotenv() 실행 False
0
95
1
RAG 답변 개선을 위한 정답지 활용 구조 검토 요청
0
118
2
3.2 from langchain.chains ~ 에서 모듈을 찾지 못할 때.
1
404
2
강의 완료 오류
0
87
1
hub.pull 이슈
0
129
2
[3.3 강의] Upstage를 사용한 RAG 구현 성공기 공유
1
148
1





