Как я могу устранить эту ошибку?
Ниже я упомянул свой код,
импортируем ОС
из langchain_community.vectorstores, импортируем FAISS
из langchain_community.embeddings import HuggingFaceEmbeddings
из langchain_community.llms import Ollama
из langchain.chains.combine_documents import create_stuff_documents_chain
из langchain.chains.retrival import create_retrival_chain
из langchain.prompts import PromptTemplate
DB_FAISS_PATH = 'vectorstore/db_faiss'
# Пользовательский шаблон запроса для системы RAG для принудительного заземления
custom_prompt_template = """Используйте следующие фрагменты информации из Закона ЕС об искусственном интеллекте, чтобы ответить на вопрос пользователя.
Если вы не знаете ответ на основе предоставленного текста, просто скажите если вы не знаете, не пытайтесь придумать ответ.
Контекст: {context
Вопрос: {question
Полезный ответ: """
def set_custom_prompt():
""" Возвращает шаблон запроса для проверки качества"""
return PromptTemplate(template=custom_prompt_template, input_variables=['context', 'question'])
def load_llm():
"""Загружает настройку Ollama LLM. Убедитесь, что на хост-компьютере работает 'ollama Serve'."""
# Мы используем Llama3, поскольку он мощный и относительно быстрый для локального развертывания через Ollama
return Ollama(model="phi3", temp=0.1)
def build_qa_chain(llm, Prompt, Retiver):
qa_chain = create_stuff_documents_chain(llm, Prompt)
rag_chain = create_retrival_chain(
retriever,
qa_chain
)
return rag_chain
def setup_rag_pipeline():
"""Функция формулирования основного конвейера, связывающая встраивания, FAISS и LLM вместе."""
print("Настройка встраивания модели...")
embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-MiniLM-L6-v2",
model_kwargs={'device': 'cpu'
)
если нет os.path.exists(DB_FAISS_PATH):
raise FileNotFoundError(f"Отсутствует база данных FAISS в {DB_FAISS_PATH}. Сначала запустите вектор_store.py, чтобы создать базу знаний.")
print("Загрузка базы данных FAISS...")
db = FAISS.load_local(DB_FAISS_PATH, embeddings,allow_dangerous_deserialization=True)
# K=3 извлекает первые 3 наиболее релевантных фрагмента на основе сходства
retriever = db.as_retriever(search_kwargs={'k': 3})
print("Инициализация Ollama LLM...")
llm = load_llm()
qa_prompt = set_custom_prompt()
qa_chain = build_qa_chain(llm, qa_prompt, ретривер)
return qa_chain
Приложение Streamlit
↓
setup_rag_pipeline()
↓
Создание цепочки LangChain
↓
Ретривер FAISS
↓
LLM (Ollama → phi3 / llama3)
Подробнее здесь: https://stackoverflow.com/questions/799 ... -field-set
Мобильная версия