I'm always excited to take on new projects and collaborate with innovative minds.

Phone Number

Email

sas_cristian@yahoo.com

Website

cristiansas.com

Address

Bistrita Nasaud, Bistriţa, Stradă Artarilor 420136

Social Links

Artificial intelligence (AI)

Construirea unui Chatbot Medical Inteligent cu BioMistral și LangChain

Descoperă cum să dezvolți un chatbot de întrebări și răspunsuri pentru domeniul medical folosind tehnologii open-source. Acest tutorial te ghidează prin procesarea documentelor PDF, generarea de embedding-uri și integrarea contextului cu ajutorul unui sistem RAG pentru a oferi răspunsuri precise și autoritare.

Construirea unui Chatbot Medical Inteligent cu BioMistral și LangChain

Crearea unui Chatbot de Întrebări și Răspunsuri Medicale folosind LLM-ul Open-Source BioMistral, LangChain, Stocarea Vectorială Chroma și RAG: Ghid Pas cu Pas

În acest tutorial, vom construi un chatbot puternic, bazat pe documente PDF, pentru întrebări și răspunsuri în domeniul medical sau al sănătății. Vom folosi LLM-ul open-source BioMistral și capacitățile flexibile de orchestrare a datelor ale LangChain pentru a procesa documentele PDF în segmente de text gestionabile. Apoi, vom codifica aceste segmente folosind Hugging Face embeddings pentru a capta relații semantice profunde și le vom stoca într-o bază de date vectorială Chroma pentru o recuperare eficientă. În final, utilizând un sistem de Generare Augmentată prin Recuperare (RAG), vom integra contextul recuperat direct în răspunsurile chatbot-ului, asigurând răspunsuri clare și autoritare pentru utilizatori. Această abordare ne permite să parcurgem rapid volume mari de PDF-uri medicale, oferind informații relevante, precise și ușor de înțeles.


Configurarea Uneltelor

Instalați și configurați pachetele Python necesare pentru procesarea documentelor, generarea embedding-urilor, LLM-uri locale și fluxuri de lucru avansate bazate pe recuperare cu LlamaCpp:

!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, 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')

În acest pas, instalăm și configurăm pachetele necesare, încărcăm PDF-urile folosind uneltele din comunitatea LangChain și montăm Google Drive pentru acces la fișiere.


Configurarea Accesului la Cheia API

Obțineți și setați în siguranță cheia API de la Hugging Face:

from google.colab import userdata
import os
from getpass import getpass

HF_API_KEY = userdata.get("HF_API_KEY")
os.environ["HF_API_KEY"] = HF_API_KEY

Această metodă asigură că datele sensibile rămân protejate.


Încărcarea și Extragerea PDF-urilor dintr-un Director

Încărcați PDF-urile dintr-un director specific și extrageți textul din acestea:

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

Împărțirea Documentelor în Segmente Gestionabile

Fragmentați fiecare document în segmente mai mici:

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

Inițializarea Hugging Face Embeddings

Creați un obiect de embedding-uri folosind modelul BAAI/bge-base-en-v1.5:

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

Construirea unui Magazin Vectorial și Efectuarea unei Căutări de Similaritate

Construiți un magazin vectorial Chroma din segmentele de text și efectuați o căutare de similaritate:

vectorstore = Chroma.from_documents(chunks, embeddings)
query = "cine este expus riscului de boli de inimă"
search = vectorstore.similarity_search(query)
to_markdown(search[0].page_content)

Crearea unui Recuperator și Preluarea Documentelor Relevante

Transformați magazinul vectorial într-un recuperator pentru a extrage eficient cele mai relevante documente:

retriever = vectorstore.as_retriever(search_kwargs={'k': 5})
retriever.get_relevant_documents(query)

Inițializarea Modelului BioMistral-7B cu LlamaCpp

Configurați un LLM local BioMistral folosind LlamaCpp și setați parametrii de generare:

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

Configurarea unui Lanț RAG cu un Prompt Personalizat

Creați un prompt personalizat și configurați un pipeline RAG folosind LangChain:

from langchain.schema.runnable import RunnablePassthrough
from langchain.schema.output_parser import StrOutputParser
from langchain.prompts import ChatPromptTemplate

template = """
<|context|>
Ești un asistent AI care urmează instrucțiunile cu strictețe.
Te rog să fii sincer și să oferi răspunsuri directe.
</s>
<|user|>
{query}
</s>
<|assistant|>
"""

prompt = ChatPromptTemplate.from_template(template)
rag_chain = (
    {'context': retriever, 'query': RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

Invocarea Lanțului RAG pentru a Răspunde la o Întrebare Medicală

Invocați lanțul RAG cu întrebarea unui utilizator:

response = rag_chain.invoke("De ce ar trebui să-mi pese de sănătatea inimii?")
to_markdown(response)

Concluzie

Prin integrarea BioMistral cu LlamaCpp și valorificarea flexibilității oferite de LangChain, am creat un chatbot medical RAG cu o conștientizare robustă a contextului. Această abordare simplifică procesul de extragere a informațiilor din volume mari de PDF-uri, oferind răspunsuri clare, concise și precise, formate în Markdown. Designul poate fi extins și adaptat pentru diverse domenii, asigurând o recuperare precisă a cunoștințelor din documente variate.


4 min read
Feb 04, 2025
By Cristian Sas
Share

Leave a comment

Your email address will not be published. Required fields are marked *

Related posts

Jun 17, 2025 • 18 min read
STRATCOM AI – Sistem Unificat de Comandă și Control Militar cu Inteligență Artificială

STRATCOM AI este un dashboard strategic de ultimă generație, construit pentru operațiuni militare mo...

Jun 16, 2025 • 2 min read
N8N 150+ Industry-Specific Workflows

150+ Industry-Specific Workflows – A Vault of Automation Systems I’ve Built, Tested, and (Sometimes)...

Jun 01, 2025 • 6 min read
🚀 Top 20 AI Coding Agents to Supercharge Your Development in 2025! 🌟

In 2025, coding isn’t just about squashing bugs 🐞—it’s about working smarter, faster, and with a lo...

Your experience on this site will be improved by allowing cookies.