HuggingFace Space с Langchain и Gradio SDK: почему я получаю ошибку, связанную с FAISS, когда использую Chroma, а не FAISS?

Я создаю HuggingFace Space с Langchain (Gradio SDK) для обмена своими данными, клонирую из пространства Chat Your Data Харрисона Чейза и продолжаю оттуда. Исправлена ​​проблема с устареванием (см. Обсуждение ), переключился на DirectoryLoader, чтобы можно было импортировать несколько файлов, и хочу использовать Chroma вместо FAISS.

Я новичок в этом, поэтому стараюсь вносить как можно меньше изменений и хочу продолжать использовать Pickle, как в оригинале, но для встраивания использую Chroma, а не FAISS, как это происходит при приеме данных:

      from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
import pickle

# Load Data
loader = DirectoryLoader('./data/')
raw_documents = loader.load()  

# Split text
text_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_documents(raw_documents)


# Load Data to vectorstore
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(documents=documents, embedding=embeddings)

# Save vectorstore
with open("vectorstore.pkl", "wb") as f:
    pickle.dump(vectorstore, f)

Это не должно быть проблемой, верно? Или мариновать совсем ненужно? В любом случае, мой главный вопрос ниже.

Мое пространство работает, но я получаю сообщение об ошибкеAttributeError: 'OpenAIEmbeddings' object has no attribute 'deployment'когда я наконец пойду общаться со своими данными. Вот журнал:

      ...
  File "/home/user/.local/lib/python3.11/site-packages/langchain/vectorstores/faiss.py", line 334, in similarity_search
    docs_and_scores = self.similarity_search_with_score(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.11/site-packages/langchain/vectorstores/faiss.py", line 275, in similarity_search_with_score
    embedding = self.embedding_function(query)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.11/site-packages/langchain/embeddings/openai.py", line 506, in embed_query
    return self.embed_documents([text])[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.local/lib/python3.11/site-packages/langchain/embeddings/openai.py", line 478, in embed_documents
    return self._get_len_safe_embeddings(texts, engine=self.deployment)
                                                       ^^^^^^^^^^^^^^^
AttributeError: 'OpenAIEmbeddings' object has no attribute 'deployment'

Я вижу, что журнал показывает, что он использует FAISS (.../langchain/vectorstores/faiss.py), но я даже не использую FAISS, я использую Chroma. Эта же ошибка выдается, даже когда я использую FAISS, поэтому я подумал, что переход на Chroma может решить проблему.

Потом, когда я удалюfaiss-cpuот моегоrequirements.txtфайл, пространство больше не запускается, и я получаю сообщение об ошибке

      Traceback (most recent call last):
  File "/home/user/app/app.py", line 17, in <module>
    vectorstore = pickle.load(f)
                  ^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'faiss'

Кто-нибудь знает, почему это происходит? Опять же, я очень новичок, поэтому могу упустить что-то элементарное. Должен ли я избавиться от рассола и использовать Chroma с постоянным каталогом?

Заранее спасибо.

0 ответов

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