星期六, 14 6 月, 2025
No Result
View All Result
AI TAIWAN 台灣人工智慧中心
  • Home
  • AI 綜合新聞
  • AI 自動化與 AI Agents
  • AI 智慧產業
  • 機器學習與應用
  • 自然語言處理
  • 神經連結和腦機接口
  • 機器人與自動化
  • 道德與法規
  • 安全
AI TAIWAN 台灣人工智慧中心
  • Home
  • AI 綜合新聞
  • AI 自動化與 AI Agents
  • AI 智慧產業
  • 機器學習與應用
  • 自然語言處理
  • 神經連結和腦機接口
  • 機器人與自動化
  • 道德與法規
  • 安全
No Result
View All Result
AI TAIWAN 台灣人工智慧中心
No Result
View All Result
Your Ad
Home 機器學習與應用

使用開源 BioMistral LLM、LangChain、Chroma 的向量儲存和 RAG 創建醫療問答聊天機器人:逐步指南

2025-02-03
in 機器學習與應用
0 0
0
使用開源 BioMistral LLM、LangChain、Chroma 的向量儲存和 RAG 創建醫療問答聊天機器人:逐步指南
Share on FacebookShare on Twitter
Your Ad


在這個教學中,我們將建立一個強大的基於 PDF 的問答聊天機器人,專門針對醫療或健康相關的內容。我們將利用開源的 BioMistral LLM 和 LangChain 的靈活數據處理能力,將 PDF 文件轉換為可管理的文本片段。接著,我們會使用 Hugging Face 的嵌入技術對這些片段進行編碼,捕捉深層語義關係,並將其存儲在 Chroma 向量數據庫中,以便高效檢索。最後,通過使用檢索增強生成 (RAG) 系統,我們將檢索到的上下文直接整合到聊天機器人的回答中,確保用戶獲得清晰且權威的答案。這種方法使我們能夠快速篩選大量醫療 PDF,提供豐富的上下文、準確且易於理解的見解。

設置工具

!pip install langchain sentence-transformers chromadb llama-cpp-python langchain_community pypdf
from langchain_community.document_loaders import PyPDFDirectoryLoader
from langchain.text_splitter import CharacterTextSplitter,RecursiveCharacterTextSplitter
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS, Chroma
from langchain_community.llms import LlamaCpp
from langchain.chains import RetrievalQA, LLMChain
import pathlib
import textwrap
from IPython.display import display
from IPython.display import Markdown

def to_markdown(text):
text = text.replace(‘•’, ‘ *’)
return Markdown(textwrap.indent(text, ‘> ‘, predicate=lambda _: True))
from google.colab import drive
drive.mount(‘/content/drive’)

首先,我們安裝並配置 Python 套件,用於文件處理、嵌入生成、本地 LLM 和基於檢索的高級工作流程。我們利用 langchain_community 來加載 PDF 和拆分文本,設置 RetrievalQA 和 LLMChain 來進行問答,並包括一個 to_markdown 工具以及 Google Drive 的掛載。

設置 API 金鑰訪問

from google.colab import userdata
# 或使用 `os.getenv(‘HUGGINGFACEHUB_API_TOKEN’)` 來獲取環境變量。
import os
from getpass import getpass

HF_API_KEY = userdata.get(“HF_API_KEY”)
os.environ[“HF_API_KEY”] = “HF_API_KEY”

在這裡,我們安全地獲取並設置 Hugging Face API 金鑰作為 Google Colab 中的環境變量。它也可以利用 HUGGINGFACEHUB_API_TOKEN 環境變量,以避免在代碼中直接暴露敏感憑證。

從目錄加載和提取 PDF

loader = PyPDFDirectoryLoader(‘/content/drive/My Drive/Data’)
docs = loader.load()

我們使用 PyPDFDirectoryLoader 掃描指定的文件夾以查找 PDF,將其文本提取到文檔列表中,為問答、摘要或關鍵字提取等任務打下基礎。

將加載的文本文檔拆分為可管理的片段

text_splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=50)
chunks = text_splitter.split_documents(docs)

在這段代碼中,使用 RecursiveCharacterTextSplitter 將 docs 中的每個文檔拆分為更小、更易管理的片段。

初始化 Hugging Face 嵌入

embeddings = HuggingFaceEmbeddings(model_name=”BAAI/bge-base-en-v1.5″)

使用 HuggingFaceEmbeddings,我們創建一個使用 BAAI/bge-base-en-v1.5 模型的對象。它將文本轉換為數字向量。

建立向量存儲並運行相似性搜索

vectorstore = Chroma.from_documents(chunks, embeddings)
query = “誰有心臟病的風險”
search = vectorstore.similarity_search(query)
to_markdown(search[0].page_content)

我們首先從文本片段和指定的嵌入模型建立 Chroma 向量存儲 (Chroma.from_documents)。接著,我們創建一個查詢,詢問「誰有心臟病的風險」,並對存儲的嵌入執行相似性搜索。然後,將最上面的結果 (search[0].page_content) 轉換為 Markdown 格式以便更清晰地顯示。

創建檢索器並獲取相關文檔

retriever = vectorstore.as_retriever(
search_kwargs=’k’: 5
)
retriever.get_relevant_documents(query)

我們將 Chroma 向量存儲轉換為檢索器 (vectorstore.as_retriever),它能有效地為給定查詢獲取最相關的文檔。

使用 LlamaCpp 初始化 BioMistral-7B 模型

llm = LlamaCpp(
model_path= “/content/drive/MyDrive/Model/BioMistral-7B.Q4_K_M.gguf”,
temperature=0.3,
max_tokens=2048,
top_p=1)

我們使用 LlamaCpp 設置一個開源的本地 BioMistral LLM,指向一個預先下載的模型文件。我們還配置了生成參數,如 temperature、max_tokens 和 top_p,這些參數控制隨機性、生成的最大標記數和核取樣策略。

設置帶有自定義提示的檢索增強生成 (RAG) 鏈

from langchain.schema.runnable import RunnablePassthrough
from langchain.schema.output_parser import StrOutputParser
from langchain.prompts import ChatPromptTemplate
template = “””
<|context|>
你是一個非常聽話的 AI 助手。
請誠實並給出直接的答案
</s>
<|user|>
query
</s>
<|assistant|>
“””
prompt = ChatPromptTemplate.from_template(template)
rag_chain = (
‘context’: retriever, ‘query’: RunnablePassthrough()
| prompt
| llm
| StrOutputParser()
)

使用上述內容,我們使用 LangChain 框架設置了一個 RAG 管道。它創建了一個自定義提示,包含指令和佔位符,結合檢索器以獲取上下文,並利用語言模型生成答案。這個流程定義為一系列操作 (RunnablePassthrough 用於直接查詢處理,ChatPromptTemplate 用於提示構建,LLM 用於生成回應,最後是 StrOutputParser 生成乾淨的文本字符串)。

調用 RAG 鏈以回答健康相關的查詢

response = rag_chain.invoke(“為什麼我應該關心我的心臟健康?”)
to_markdown(response)

現在,我們用用戶的查詢調用之前構建的 RAG 鏈。它將查詢傳遞給檢索器,從文檔集合中檢索相關上下文,並將該上下文輸入到 LLM 中以生成簡潔、準確的答案。

總結來說,通過整合 BioMistral 和 LlamaCpp,並利用 LangChain 的靈活性,我們能夠建立一個具有上下文意識的醫療 RAG 聊天機器人。從基於片段的索引到無縫的 RAG 管道,它簡化了從大量 PDF 數據中挖掘相關見解的過程。最終的回答以 Markdown 格式呈現,使用戶獲得清晰且易於閱讀的答案。這種設計可以擴展或調整以適應各種領域,確保在不同文檔中進行知識檢索的可擴展性和精確性。

在這裡使用 Colab 筆記本。此外,別忘了在 Twitter 上關注我們,加入我們的 Telegram 頻道和 LinkedIn 群組。別忘了加入我們的 75k+ ML SubReddit。

🚨 介紹 IntellAgent:一個開源的多代理框架,用於評估複雜的對話 AI 系統 (推廣)



新聞來源

本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!

Tags: BioMistralLLMLangChainChromaRAG使用開源創建醫療問答聊天機器人逐步指南的向量儲存和
Previous Post

Google AI 推出 Parfait:一個以隱私為首的 AI 系統,用於安全數據聚合和分析

Next Post

精彩的 Plotly 代碼系列 (第 9 部分):點、斜率還是堆疊? | 作者:Jose Parreño | 2025 年 2 月

Related Posts

劍橋大學和莫納什大學的研究人員推出 ReasonGraph:一個可視化和分析大型語言模型推理過程的網絡平台
機器學習與應用

劍橋大學和莫納什大學的研究人員推出 ReasonGraph:一個可視化和分析大型語言模型推理過程的網絡平台

2025-03-16
生成式人工智慧的影響及其對數據科學家的啟示
機器學習與應用

生成式人工智慧的影響及其對數據科學家的啟示

2025-03-15
這篇AI論文介紹了BD3-LMs:一種結合自回歸模型和擴散模型的混合方法,用於可擴展和高效的文本生成
機器學習與應用

這篇AI論文介紹了BD3-LMs:一種結合自回歸模型和擴散模型的混合方法,用於可擴展和高效的文本生成

2025-03-15
九個生鏽的Pico PIO瓦特(第二部分)
機器學習與應用

九個生鏽的Pico PIO瓦特(第二部分)

2025-03-15
開始使用 Amazon Bedrock Agents 的電腦操作
機器學習與應用

開始使用 Amazon Bedrock Agents 的電腦操作

2025-03-15
評估使用 Amazon Bedrock 知識庫的 RAG 應用程式
機器學習與應用

評估使用 Amazon Bedrock 知識庫的 RAG 應用程式

2025-03-14
Next Post
精彩的 Plotly 代碼系列 (第 9 部分):點、斜率還是堆疊? | 作者:Jose Parreño | 2025 年 2 月

精彩的 Plotly 代碼系列 (第 9 部分):點、斜率還是堆疊? | 作者:Jose Parreño | 2025 年 2 月

使用者友善系統可協助開發者建立更有效率的模擬與人工智慧模型 | 麻省理工學院新聞

使用者友善系統可協助開發者建立更有效率的模擬與人工智慧模型 | 麻省理工學院新聞

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Archives

  • 2025 年 6 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2023 年 10 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 5 月
  • 2023 年 3 月
  • 2023 年 1 月
  • 2022 年 12 月
  • 2022 年 11 月
  • 2022 年 5 月
  • 2022 年 4 月
  • 2022 年 1 月
  • 2021 年 11 月
  • 2021 年 8 月
  • 2021 年 5 月
  • 2021 年 3 月
  • 2021 年 1 月
  • 2020 年 12 月
  • 2020 年 10 月
  • 2020 年 9 月
  • 2019 年 7 月
  • 2018 年 11 月

Categories

  • AI 智慧產業
  • AI 綜合新聞
  • AI 自動化與 AI Agents
  • 安全
  • 機器人與自動化
  • 機器學習與應用
  • 神經連結和腦機接口
  • 自然語言處理
  • 道德與法規
Your Ad
  • 關於我們
  • 廣告合作
  • 免責聲明
  • 隱私權政策
  • DMCA
  • Cookie 隱私權政策
  • 條款與條件
  • 聯絡我們
AI TAIWAN

版權 © 2024 AI TAIWAN.
AI TAIWAN 對外部網站的內容不負任何責任。

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Home
  • AI 綜合新聞
  • AI 自動化與 AI Agents
  • AI 智慧產業
  • 機器學習與應用
  • 自然語言處理
  • 神經連結和腦機接口
  • 機器人與自動化
  • 道德與法規
  • 安全

版權 © 2024 AI TAIWAN.
AI TAIWAN 對外部網站的內容不負任何責任。