Local AI

ساخت پایپ‌لاین RAG محلی با LlamaIndex

در دنیای امروز که داده‌محور است، شرکت‌ها تمایل کمتری به ارسال اسناد حساس داخلی به APIهای مدل‌های زبانی بزرگ (LLM) عمومی دارند. راه حل چیست؟ یک پایپ‌لاین تولید تقویت‌شده با بازیابی (RAG) کاملاً محلی. با ترکیب LlamaIndex برای ساختاردهی داده‌ها و ChromaDB برای ذخیره‌سازی برداری، می‌توانید یک سیستم بازیابی دانش امن و بلادرنگ ایجاد کنید که کاملاً بر روی زیرساخت شما اجرا می‌شود. این رویکرد از حریم خصوصی داده‌ها اطمینان حاصل کرده و همزمان تأخیر و هزینه‌های عملیاتی را به طور قابل توجهی کاهش می‌دهد.

چرا از LlamaIndex و ChromaDB به صورت محلی استفاده کنیم؟

ساخت یک پایپ‌لاین RAG محلی مزایای متمایزی نسبت به جایگزین‌های مبتنی بر ابر دارد. مهم‌ترین آن‌ها حاکمیت داده است. اسناد اختصاصی شما هرگز از شبکه شما خارج نمی‌شوند و بنابراین خطرات مرتبط با نشت داده‌های شخص ثالث را کاهش می‌دهد. دوم، استنتاج محلی و جستجوی برداری هزینه‌های مبتنی بر توکن را حذف می‌کند که مقیاس‌پذیری را قابل پیش‌بینی‌تر می‌سازد. در نهایت، تأخیر به طور چشمگیری کاهش می‌یابد زیرا داده‌ها برای رسیدن به سرورهای خارجی نیاز به سفر در اینترنت عمومی ندارند. LlamaIndex هماهنگی پیچیده مورد نیاز برای اتصال اسناد به LLMها را ساده می‌کند، در حالی که ChromaDB یک پایگاه داده برداری سبک و قابل جاسازی ارائه می‌دهد که برای هر دو محیط توسعه و تولید ایده‌آل است.

راه‌اندازی محیط

قبل از ورود به کدنویسی، مطمئن شوید که Python 3.9+ نصب شده است. شما نیاز به نصب کتابخانه‌های اصلی دارید. ما از llama-index برای چارچوب نمایه‌سازی و chromadb برای ذخیره‌سازی برداری استفاده خواهیم کرد. برای استخراج ویژگی‌های برداری (Embeddings)، می‌توانیم از API اوپن‌ای‌آی استفاده کنیم یا برای تجربه‌ای کاملاً محلی، بسته llama-index-embeddings-huggingface را به کار ببریم. در این مثال، برای سهولت در راه‌اندازی، از API استاندارد استخراج ویژگی‌های اوپن‌ای‌آی استفاده می‌کنیم، اما توجه داشته باشید که می‌توانید آن را با مدل‌های محلی مانند BGE یا E5 جایگزین کنید.
pip install llama-index chromadb openai

ساخت نمایه (Index)

هسته اصلی یک سیستم RAG، نمایه (Index) آن است. LlamaIndex یک API ساده برای ورود داده‌های غیرساختاریافته (مانند PDFها، فایل‌های متنی یا دایرکتوری‌ها) و تبدیل آن‌ها به قطعاتی ارائه می‌دهد که به صورت بردار در ChromaDB ذخیره می‌شوند. قطعه کد زیر نحوه ایجاد یک نمایه ساده در حافظه را از یک دایرکتوری شامل فایل‌های متنی نشان می‌دهد.
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb

# 1. راه‌اندازی ChromaDB
chroma_client = chromadb.PersistentClient(path="./chroma_db")
chroma_collection = chroma_client.get_or_create_collection("enterprise_docs")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)

# 2. بارگذاری داده‌ها
documents = SimpleDirectoryReader("./data").load_data()

# 3. ایجاد نمایه
index = VectorStoreIndex.from_documents(
    documents,
    vector_store=vector_store
)

پرس‌وجو از پایگاه دانش

پس از ساخت نمایه، پرس‌وجو از آن ساده است. LlamaIndex بازیابی قطعات مرتبط را مدیریت کرده و آن‌ها را در زمینه دستورالعمل (Prompt) به LLM منتقل می‌کند. این امر اطمینان حاصل می‌کند که مدل پاسخ‌ها را صرفاً بر اساس داده‌های سازمانی شما تولید می‌کند.
from llama_index.core import QueryEngine

# ایجاد موتور پرس‌وجو
query_engine = index.as_query_engine()

# اجرای پرس‌وجو
response = query_engine.query("What are the key security protocols mentioned in our policy documents?")
print(response)

نتیجه‌گیری

ساخت یک پایپ‌لاین RAG محلی با LlamaIndex و ChromaDB به سازمان‌ها این امکان را می‌دهد تا از پتانسیل هوش مصنوعی بهره‌مند شوند بدون آنکه امنیت یا سرعت را فدای آن کنند. با نگه داشتن داده‌ها در محیط محلی و بهره‌گیری از جستجوی برداری کارآمد، توسعه‌دهندگان می‌توانند سیستم‌های بازیابی دانش سازمانی قدرتمندی بسازند که مقیاس‌پذیر و مقرون‌به‌صرفه هستند. هنگامی که پایپ‌لاین خود را بهبود می‌بخشید، در نظر بگیرید که با مدل‌های استخراج ویژگی مختلف و استراتژی‌های بازرتبه‌بندی (Re-ranking) آزمایش کنید تا دقت نتایج بازیابی خود را بیشتر افزایش دهید. آینده هوش مصنوعی سازمانی، محلی، خصوصی و به طور فزاینده‌ای در دسترس است.
Share: