Given
def load_pdf(): pdf_name = 'WEF_Global_Risks_Report_2023.pdf' # loaders = [PyPDFLoader(f"input/{pdf_name}")] loaders = [PyPDFLoader(pdf_name)] index = VectorstoreIndexCreator( embedding = HuggingFaceEmbeddings(model_name='all-MiniLM-L12-v2'), text_splitter=RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=0) ).from_loaders(loaders) return index
I have following error
---------------------------------------------------------------------------ValueError Traceback (most recent call last)Cell In[4], line 24 17 index = VectorstoreIndexCreator( 18 embedding = HuggingFaceEmbeddings(model_name='all-MiniLM-L12-v2'), 19 text_splitter=RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=0) 20 ).from_loaders(loaders) 22 return index---> 24 index = load_pdf()Cell In[4], line 20, in load_pdf() 13 # loaders = [PyPDFLoader(f"input/{pdf_name}")] 14 loaders = [PyPDFLoader(pdf_name)] 17 index = VectorstoreIndexCreator( 18 embedding = HuggingFaceEmbeddings(model_name='all-MiniLM-L12-v2'), 19 text_splitter=RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=0)---> 20 ).from_loaders(loaders) 22 return indexFile D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\langchain\indexes\vectorstore.py:82, in VectorstoreIndexCreator.from_loaders(self, loaders) 80 for loader in loaders: 81 docs.extend(loader.load())---> 82 return self.from_documents(docs)File D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\langchain\indexes\vectorstore.py:87, in VectorstoreIndexCreator.from_documents(self, documents) 85 """Create a vectorstore index from documents.""" 86 sub_docs = self.text_splitter.split_documents(documents)---> 87 vectorstore = self.vectorstore_cls.from_documents( 88 sub_docs, self.embedding, **self.vectorstore_kwargs 89 ) 90 return VectorStoreIndexWrapper(vectorstore=vectorstore)File D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\langchain\vectorstores\chroma.py:613, in Chroma.from_documents(cls, documents, embedding, ids, collection_name, persist_directory, client_settings, client, collection_metadata, **kwargs) 611 texts = [doc.page_content for doc in documents] 612 metadatas = [doc.metadata for doc in documents]--> 613 return cls.from_texts( 614 texts=texts, 615 embedding=embedding, 616 metadatas=metadatas, 617 ids=ids, 618 collection_name=collection_name, 619 persist_directory=persist_directory, 620 client_settings=client_settings, 621 client=client, 622 collection_metadata=collection_metadata, 623 **kwargs, 624 )File D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\langchain\vectorstores\chroma.py:568, in Chroma.from_texts(cls, texts, embedding, metadatas, ids, collection_name, persist_directory, client_settings, client, collection_metadata, **kwargs) 535 @classmethod 536 def from_texts( 537 cls: Type[Chroma], (...) 547 **kwargs: Any, 548 ) -> Chroma: 549 """Create a Chroma vectorstore from a raw documents. 550 551 If a persist_directory is specified, the collection will be persisted there. (...) 566 Chroma: Chroma vectorstore. 567 """--> 568 chroma_collection = cls( 569 collection_name=collection_name, 570 embedding_function=embedding, 571 persist_directory=persist_directory, 572 client_settings=client_settings, 573 client=client, 574 collection_metadata=collection_metadata, 575 **kwargs, 576 ) 577 chroma_collection.add_texts(texts=texts, metadatas=metadatas, ids=ids) 578 return chroma_collectionFile D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\langchain\vectorstores\chroma.py:126, in Chroma.__init__(self, collection_name, embedding_function, persist_directory, client_settings, collection_metadata, client, relevance_score_fn) 121 self._persist_directory = ( 122 _client_settings.persist_directory or persist_directory 123 ) 125 self._embedding_function = embedding_function--> 126 self._collection = self._client.get_or_create_collection( 127 name=collection_name, 128 embedding_function=self._embedding_function.embed_documents 129 if self._embedding_function is not None 130 else None, 131 metadata=collection_metadata, 132 ) 133 self.override_relevance_score_fn = relevance_score_fnFile D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\chromadb\api\client.py:237, in Client.get_or_create_collection(self, name, metadata, embedding_function, data_loader) 227 @override 228 def get_or_create_collection( 229 self, (...) 235 data_loader: Optional[DataLoader[Loadable]] = None, 236 ) -> Collection:--> 237 return self._server.get_or_create_collection( 238 name=name, 239 metadata=metadata, 240 embedding_function=embedding_function, 241 data_loader=data_loader, 242 tenant=self.tenant, 243 database=self.database, 244 )File D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\chromadb\telemetry\opentelemetry\__init__.py:127, in trace_method.<locals>.decorator.<locals>.wrapper(*args, **kwargs) 125 global tracer, granularity 126 if trace_granularity < granularity:--> 127 return f(*args, **kwargs) 128 if not tracer: 129 return f(*args, **kwargs)File D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\chromadb\api\segment.py:216, in SegmentAPI.get_or_create_collection(self, name, metadata, embedding_function, data_loader, tenant, database) 201 @trace_method( 202 "SegmentAPI.get_or_create_collection", OpenTelemetryGranularity.OPERATION 203 ) (...) 214 database: str = DEFAULT_DATABASE, 215 ) -> Collection:--> 216 return self.create_collection( # type: ignore 217 name=name, 218 metadata=metadata, 219 embedding_function=embedding_function, 220 data_loader=data_loader, 221 get_or_create=True, 222 tenant=tenant, 223 database=database, 224 )File D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\chromadb\telemetry\opentelemetry\__init__.py:127, in trace_method.<locals>.decorator.<locals>.wrapper(*args, **kwargs) 125 global tracer, granularity 126 if trace_granularity < granularity:--> 127 return f(*args, **kwargs) 128 if not tracer: 129 return f(*args, **kwargs)File D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\chromadb\api\segment.py:190, in SegmentAPI.create_collection(self, name, metadata, embedding_function, data_loader, get_or_create, tenant, database) 182 self._product_telemetry_client.capture( 183 ClientCreateCollectionEvent( 184 collection_uuid=str(id), 185 embedding_function=embedding_function.__class__.__name__, 186 ) 187 ) 188 add_attributes_to_current_span({"collection_uuid": str(id)})--> 190 return Collection( 191 client=self, 192 id=coll["id"], 193 name=name, 194 metadata=coll["metadata"], # type: ignore 195 embedding_function=embedding_function, 196 data_loader=data_loader, 197 tenant=tenant, 198 database=database, 199 )File D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\chromadb\api\models\Collection.py:87, in Collection.__init__(self, client, name, id, embedding_function, data_loader, tenant, database, metadata) 85 # Check to make sure the embedding function has the right signature, as defined by the EmbeddingFunction protocol 86 if embedding_function is not None:---> 87 validate_embedding_function(embedding_function) 89 self._embedding_function = embedding_function 90 self._data_loader = data_loaderFile D:\C_Drive\Hardlink\Users\TTHCMM\Envs\generic\lib\site-packages\chromadb\api\types.py:196, in validate_embedding_function(embedding_function) 193 protocol_signature = signature(EmbeddingFunction.__call__).parameters.keys() 195 if not function_signature == protocol_signature:--> 196 raise ValueError( 197 f"Expected EmbeddingFunction.__call__ to have the following signature: {protocol_signature}, got {function_signature}\n" 198 "Please see https://docs.trychroma.com/embeddings for details of the EmbeddingFunction interface.\n" 199 "Please note the recent change to the EmbeddingFunction interface: https://docs.trychroma.com/migration#migration-to-0416---november-7-2023 \n" 200 )ValueError: Expected EmbeddingFunction.__call__ to have the following signature: odict_keys(['self', 'input']), got odict_keys(['self', 'args', 'kwargs'])Please see https://docs.trychroma.com/embeddings for details of the EmbeddingFunction interface.Please note the recent change to the EmbeddingFunction interface: https://docs.trychroma.com/migration#migration-to-0416---november-7-2023
How to resolve it?