برنامه نویسی

ساختن یک چت بابات متخصص IBM Aix با استفاده از Rag و Faiss

مقدمه

در این راهنما ، ما chatbot مبتنی بر پارچه که به عنوان یک عمل می کند IBM AIX Expert چه کسی به تمام سؤالات مربوط به AIX ما پاسخ خواهد داد. این chatbot اطلاعات را از مستندات IBM AIX، آن را با استفاده از FAISS برای جستجوی بردار، و با استفاده از پاسخ ها استفاده کنید LLM Openaiبشر ما نیز پوشش خواهیم داد خودکار سازی مجموعه مستندات AIX وت استفاده از چت بابات با استفاده از dockerبشر


📌 بررسی اجمالی طراحی سیستم

معماری

  1. لایه جمع آوری داده ها: مستندات IBM AIX را ضبط می کند و متن را از PDFS استخراج می کند.
  2. لایه پردازش داده ها: متن را تقسیم می کند و آن را با استفاده از FAISS به تعبیه های بردار تبدیل می کند.
  3. لایه بازیابی-اوج (RAG) لایه: از یک بانک اطلاعاتی بردار برای واکشی اسناد مربوطه و تغذیه آنها به LLM OpenAi استفاده می کند.
  4. رابط کاربری: یک رابط کاربری مبتنی بر جریان برای تعامل chatbot.
  5. استقرار: کانتینر سازی داکر برای استقرار آسان و مقیاس پذیری.

📌 مرحله 1: تنظیم پروژه

وابستگی های مورد نیاز را نصب کنید

اطمینان حاصل کنید که Python 3.9+ را نصب کرده اید ، سپس کتابخانه های مورد نیاز را نصب کنید:

pip install streamlit langchain openai faiss-cpu bs4 requests PyMuPDF
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک اسکریپت جدید پایتون ایجاد کنید Aix_Rag_Chatbot.py و کد زیر را اضافه کنید.


📌 مرحله 2: جمع آوری مستندات IBM AIX

ما روند جمع آوری مستندات IBM AIX را از مرکز دانش IBMبا IBM Redbooks (PDFS)، و منابع آنلاین

🔹 SCRAPING IBM DOCS

import requests
from bs4 import BeautifulSoup

def scrape_aix_docs(url):
    """
    Fetches IBM AIX documentation from a given URL and extracts text content.
    """
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    text_content = "\n".join([p.get_text() for p in soup.find_all("p")])
    with open("aix_docs.txt", "w", encoding="utf-8") as file:
        file.write(text_content)
    print("AIX documentation scraped and saved!")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این عملکرد را با: تماس بگیرید:

scrape_aix_docs("https://www.ibm.com/docs/en/aix/7.3?topic=commands")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

زمان تخمینی: 10-20 ثانیه

🔹 استخراج متن از PDF AIX

import fitz  # PyMuPDF

def extract_text_from_pdf(pdf_path):
    """
    Extracts text from a given PDF file and appends it to aix_docs.txt.
    """
    output_text = ""
    with fitz.open(pdf_path) as doc:
        for page in doc:
            output_text += page.get_text()
    with open("aix_docs.txt", "a", encoding="utf-8") as file:
        file.write(output_text)
    print("Extracted text from PDF saved!")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این عملکرد را با: تماس بگیرید:

extract_text_from_pdf("aix_redbook.pdf")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

زمان تخمینی: 20-60 ثانیه


📌 مرحله 3: ایجاد یک پایگاه داده بردار FAISS

ما اکنون خواهیم کرد متن استخراج شده را تقسیم کنید، آن را به تعبیه، و آن را با استفاده از آن ذخیره کنید خیانتبشر

from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.document_loaders import TextLoader

def build_vector_db():
    """
    Processes AIX documentation, splits it into smaller chunks, 
    generates embeddings, and stores them in FAISS vector database.
    """
    with open("aix_docs.txt", "r", encoding="utf-8") as file:
        aix_text = file.read()
    text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
    split_texts = text_splitter.split_text(aix_text)
    with open("aix_docs_cleaned.txt", "w", encoding="utf-8") as file:
        for chunk in split_texts:
            file.write(chunk + "\n\n")
    loader = TextLoader("aix_docs_cleaned.txt")
    documents = loader.load()
    embedding_model = OpenAIEmbeddings()
    vector_db = FAISS.from_documents(documents, embedding_model)
    vector_db.save_local("aix_vector_db")
    print("Vector database built successfully!")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک بار با این عملکرد تماس بگیرید:

build_vector_db()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

زمان تخمین زده شده: 1-2 دقیقه


📌 مرحله 4: اجرای Chatbot Expert AIX

حال ، بیایید یک ui streamlit برای تعامل با Chatbot ما.

import streamlit as st
from langchain.llms import OpenAI
from langchain.chains import RetrievalQA

# Load FAISS vector DB
embedding_model = OpenAIEmbeddings()
vector_db = FAISS.load_local("aix_vector_db", embedding_model)
retriever = vector_db.as_retriever()

# Setup RAG Chain
llm = OpenAI()
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)

# Streamlit UI
st.title("IBM AIX Expert Chatbot")
st.write("Ask me anything about IBM AIX!")

user_input = st.text_input("Enter your question:")
if st.button("Submit"):
    if user_input:
        response = qa_chain.run(user_input)
        st.write(response)
    else:
        st.write("Please enter a question.")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

زمان تخمینی: 30-60 ثانیه

chatbot را با:

streamlit run Aix_Rag_Chatbot.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


📌 مرحله 5: استقرار با Docker

container build و Run Container

# Build the Docker image
docker build -t aix-rag-chatbot .

# Run the container
docker run -p 8501:8501 aix-rag-chatbot
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

به chatbot خود دسترسی پیدا کنید http: // localhost: 8501


اکنون Chatbot برای عمل آماده است ، آن را در محیط مورد علاقه خود در فضای اولیه/ابر مستقر کنید و آن را طبق نیاز مقیاس کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا