Как добавить коллекции/объект в базу данных 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/