Оллама с RAG, чат с PDFPython

Программы на Python
Ответить
Anonymous
 Оллама с RAG, чат с PDF

Сообщение Anonymous »

В настоящее время я пытаюсь создать чат-бота, используя Ollama с RAG, чтобы читать PDF-файлы в качестве справочного материала. Однако я столкнулся с проблемой, из-за которой ответы чат-бота включают содержимое из PDF-файла, даже если я не задаю вопросы, связанные с PDF-файлом.
Ниже приведен код

Код: Выделить всё

from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from langchain.prompts import PromptTemplate
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_community.llms import Ollama
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import create_retrieval_chain

ollama_llm = Ollama(model="qwen2.5:7b", callbacks=CallbackManager([StreamingStdOutCallbackHandler()]))

loader = PyPDFLoader("test.pdf")
docx = loader.load_and_split()
text_splitter = CharacterTextSplitter(chunk_size=5, chunk_overlap=2)
documents = text_splitter.split_documents(docx)

embeddings = OllamaEmbeddings(model="qwen2.5:7b")
vectordb = Chroma.from_documents(docx, embeddings,persist_directory="./knowledge-base")
retriever = vectordb.as_retriever()

template = """
 [INST] You are a home assistant designed to help users with a variety of daily life tasks.
Your role includes providing practical advice, offering solutions to common household problems, and assisting with daily planning.
Respond in a helpful, friendly, and concise manner, showing empathy and understanding. [/INST] 
[INST] Question: {input}
Context: {context}
Answer: [/INST]
"""

combine_docs_chain = create_stuff_documents_chain(
ollama_llm, PromptTemplate(template=template)
)
retrieval_chain = create_retrieval_chain(retriever, combine_docs_chain)

while True:
user_input = input("User:")
if user_input == 'bye':
break
response = retrieval_chain.invoke({'input':user_input})
print()
print(response)
И вот что я получаю
Пользователь: привет
Привет, Алекс! Похоже, вы очень увлечены GTA 10. Видеоигры могут стать интересным способом расслабиться и исследовать разные миры. Если вам когда-нибудь понадобятся советы по улучшению игрового процесса или вы просто захотите поговорить об игре, не стесняйтесь спрашивать! Кроме того, обязательно совмещайте игры с другими занятиями, чтобы занятия были приятными и полезными для здоровья.
Содержимое PDF-файла
Может кто-нибудь помочь мне понять, почему это происходит и как это решить?

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-with-pdf
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»