Как добавить коллекции/объект в базу данных Chroma?

Я пытаюсь запустить несколько документов через API встраивания текста OpenAI и вставить полученное встраивание вместе с текстом в базу данных Chroma локально.

      sales_data = medium_data_split + yt_data_split
sales_store = Chroma.from_documents(
    sales_data, embeddings, collection_name="sales"
)

Этот процесс завершается неудачей, потому что я получаюRateLimitError: Rate limit reached for default-text-embedding-ada-002ошибка OpenAI API, поскольку я использую свою личную учетную запись.

В качестве обходного пути я хочу запустить цикл, разделив большие документы medium_data_split на более мелкие фрагменты и пропустив их через встраивание OpenAI API с минутным интервалом каждый.

Для этого я хочу объединить/объединить полученные базы данных цветности, но пока не нашел способа. Может ли кто-нибудь предложить один?

Пробовал таким образом

      sales_data1 = yt_data_split
sales_store1 = Chroma.from_documents(
    sales_data1, embeddings, collection_name="sales"
)

sales_data2 = medium_data_split[0:25]
sales_store2 = Chroma.from_documents(
    sales_data2, embeddings, collection_name="sales"
)

sales_store_concat = sales_store1.add(sales_store2)

Я получаю следующую ошибку:AttributeError: 'Chroma' object has no attribute 'add'

1 ответ

Одним из решений было бы использование TextSplitter для разделения документов на несколько частей и сохранения их на диске.

разделить его на куски

      text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

Вы также можете использовать вложения OpenSource, напримерSentenceTransformerEmbeddingsдля создания вложений.

создать функцию внедрения с открытым исходным кодом

      embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")

Затем вы можете выполнить поиск по встраиваниям на предмет сходства и, в зависимости от оценки сходства, выбрать фрагменты и отправить их в OpenAI.

сохранить на диск

          db2 = Chroma.from_documents(docs, embedding_function, persist_directory="./chroma_db")
    db2.persist()

    docs_and_scores = db2.similarity_search_with_score("search query", k=2, fetch_k=5)

Также существует возможность объединения векторных хранилищ. Проверьте: https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/faiss .

Ссылка: https://python.langchain.com/docs/modules/data_connection/document_transformers/

https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/sentence_transformers

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