Функция Chromadb from_documents выдает ошибку

Следующая функция работала еще несколько дней назад, но теперь выдает эту ошибку:

ValueError: Ожидается, что EmbeddingFunction._call_ будет иметь следующую подпись: odict_keys(['self', 'input']), получено odict_keys(['args', 'kwargs']). См. https://docs.trychroma. com/embeddings для получения подробной информации об интерфейсе EmbeddingFunction. Обратите внимание на недавнее изменение интерфейса EmbeddingFunction: https://docs.trychroma.com/migration#migration-to-0416---november-7-2023

Я не уверен, какие изменения необходимы для работы с этим.

` def create_chromadb(link): 
    embedding_function = SentenceTransformerEmbeddings(model_name = "all-MiniLM-L6-v2")
    loader = TextLoader(link)
    documents = loader.load()
    
    # Split the documents into chunks (no changes needed here)
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=500)
    chunks = text_splitter.split_documents(documents)
    
    # Update for new EmbeddingFunction definition
    # D is set to the type of documents (Text in this case)
    D = Union[str, List[str]]  # Adjust based on your document format (single string or list of strings)
    embedding_function: EmbeddingFunction[D] = embedding_function
    
    # Initialize Chroma with the embedding function and persist the database
    db = Chroma.from_documents(chunks, embedding_function, ids=None, collection_name = "langchain", persist_directory = "./chroma_db")
    db.persist()
    print(f"Saved {len(chunks)} chunks")
    
    return db`

docs.trychroma.com/migration#migration-to-0416---ноябрь-7-2023

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
339
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я немного модифицирую ваш код, используя HuggingFaceEmbeddings вместо SentenceTransformerEmbeddings.

from langchain_community.embeddings import HuggingFaceEmbeddings
embedding = HuggingFaceEmbeddings(
    model_name = "sentence-transformers/all-MiniLM-L6-v2")

from langchain_community.vectorstores import Chroma
db = Chroma.from_documents(
    documents=chunks,
    embedding=embedding,
    persist_directory = "/tmp/chroma_db"
)
db.persist()

Другие вопросы по теме