نیک آموز > وبلاگ > هوش مصنوعی > ۴ مرحله ساخت پایپلاینها در RAG با نمونه کد واقعی ۴ مرحله ساخت پایپلاینها در RAG با نمونه کد واقعی هوش مصنوعی LLM نوشته شده توسط: نگین فاتحی تاریخ انتشار: ۰۱ آبان ۱۴۰۳ آخرین بروزرسانی: 25 اسفند 1404 زمان مطالعه: 5 دقیقه ۲.۸ (۸) پایپلاینها در RAG در مدلهای هوش مصنوعی مولد عملکرد فوقالعادهای در پاسخ دادن به بسیاری از سوالات کاربران دارند؛ اما بهدلیل دانش محدود، امکان جواب دادن آنها به سوالهای خاص و خارج از چهارچوب دانش آموزش دادهشده وجود ندارد. اما آیا این انتهای راه است و نمیتوان انتظارات بیشتری از این مدلها داشت؟ خیر. کلید این قفل بهدست “Pipeline” در تکنیک پایپلاینها در RAG است. پایپلاین روشی برای ارائه دانش خاص به مدلهای هوش مصنوعی مولد است؛ دانشی که آنها درحالحاضر ندارند. در این مقاله، نحوه ساخت یک فایل PDF از سوالات متداول کاربران را بههمراه کد آن نشان خواهیم داد. فهرست محتوایی Toggle RAG چیست؟مبانی پایپلاینها در RAGفرآیند ایندکس کردن دادههافرآیند بازیابی و تولیدساخت یک پایپلاین ساده برای سوالات متداول کاربرانسخن پایانی پایپلاینها در RAGسوالات متداول پایپلاینها در RAG۱. پایپلاینها در RAG چه مشکلی از مدلهای هوش مصنوعی مولد را حل میکنند؟۲. چرا مدلهای LLM به تنهایی برای پاسخگویی به همه سوالات کافی نیستند؟۳. تکنیک RAG چگونه دانش مدلهای هوش مصنوعی را افزایش میدهد؟۴. پایپلاینهای RAG معمولاً از چند مرحله اصلی تشکیل میشوند؟۵. در مرحله ایندکس کردن دادهها در پایپلاینها در RAG چه اتفاقی میافتد؟۶. چرا در پایپلاینها در RAG اسناد به قطعات کوچکتر تقسیم میشوند؟۷. نقش Embedding در پایپلاینهای RAG چیست؟۸. پایگاه داده برداری چه نقشی در عملکرد پایپلاینها در RAG دارد؟۹. در مرحله Retrieval در پایپلاینهای RAG چه عملیاتی انجام میشود؟۱۰. چه ابزارهایی برای ساخت یک پایپلاین ساده RAG در پایتون استفاده میشوند؟ RAG چیست؟ مدلهای هوش مصنوعی بر پایه زبان بزرگ (LLM) بسیار توانمند هستند؛ اما با مسائل متعددی مانند ایجاد محتوای نادرست و نامربوط (هذیانگویی) و عدم شفافیت در نحوه عملکرد مواجه میشوند. Retrieval-Augmented Generation (RAG) تکنیکی برای حل این مشکلات با تقویت دانش LLM است. این فرآیند با ارائه دادههای خاص به مدل، دامنه پاسخگویی آن را افزایش میدهد. یکی از کاربردهای کلیدی مدلهای مبتنیبر LLM در رباتهای پرسشوپاسخ پیشرفته (Q&A) است. برای ایجاد این ربات لازم است که دانش مدلهای LLM را با دادههای خاص مورد نیاز گسترش داد. 💡 همین حالا یادگیری آموزش هوش مصنوعی را شروع کنید و مهارتهایی را بیاموزید که آینده فناوری را شکل میدهند. برایناساس، باید از فرآیند بهینهسازی پاسخهای مدل با تکنیک RAG استفاده کنیم. در این حالت میتوانیم انتظار فهمیدن سوالات مربوطبه موضوعات خصوصی یا خاص و پاسخگویی به آنها را از مدل داشته باشیم. مبانی پایپلاینها در RAG بهطور معمول، مبانی پایپلاینها در RAG بهشکل زیر است: مبانی پایپلاینها در RAG یک پایپلاین RAG در دو فاز اصلی فرآیند را اجرا میکند: فرآیند ایندکس کردن دادهها این بخش شامل مراحل زیر میشود: بارگذاری دادهها: اولین مرحله که در آن، تمام اسناد یا اطلاعات مورد استفاده وارد مدل میشوند؛ تقسیم دادهها: اسناد بزرگ به قطعات کوچکتر تقسیم میشوند؛ بهعنوان مثال، بخشهایی که هرکدام حداکثر ۵۰۰ کاراکتر دارند؛ جاسازی دادهها: دادهها با استفاده از یک مدل جاسازی (Embedding Model)، بهشکل برداری تبدیل میشوند تا برای سیستمهای کامپیوتری قابل درک باشند؛ ذخیرهسازی دادهها: این جاسازیهای برداری در یک پایگاه داده برداری (Vector Database) ذخیره میشوند. بنابراین جستوجوی هر فیلد آسان خواهد بود. 💡 جهت مشاهده توضیحات کامل، سرفصلها و اطلاعات دوره آموزش Vector Database، به صفحه مربوطه مراجعه کنید. فرآیند بازیابی و تولید فرآیند بازیابی “Retrieval” و فرآیند تولید “Generation” نام دارد. در ادامه، ابتدا به تشریح مراحل Retrieval خواهیم پرداخت. بازیابی: وقتی کاربر سوالی میپرسد: ابتدا ورودی او با استفاده از همان مدل تعبیهشده از مرحله ایندکس کردن داده، به یک بردار (بردار کوئری) تبدیل میشود؛ سپس این بردار کوئری با همه بردارهای Vector Database مطابقت داده میشود. هدف از این تطابق، پیدا کردن مشابهترین بردارهایی است که احتمال میرود حاوی پاسخ سوال کاربر باشند. بهطور مثال، استفاده از متریک فاصله Euclidean میتواند فرآیند را به نتیجه مورد نظر برساند. این مرحله تلاش دارد تا بخشهایی از دانش مدل که با پرسش کاربر مرتبط هستند را شناسایی کند. تولید: مدل LLM سوال کاربر و اطلاعات بازیابیشده از پایگاه داده برداری را برای ایجاد پاسخ میگیرد. این فرآیند با ترکیب سوال کاربر و دادههای شناساییشده در مرحله بازیابی، تلاش دارد تا پاسخ کاربر را تولید کند. ساخت یک پایپلاین ساده برای سوالات متداول کاربران ساخت یک پایپلاین ابتدایی RAG، با نوشتن چند خط کد ممکن است. برای این کار، از چهار مورد استفاده میکنیم: Langchain OpenAI Embeddings Chroma Vector Database OpenAI LLM “Langchain” کتابخانهای محبوب در پایتون است که برای ساخت برنامههای سفارشی RAG استفاده میشود. کتابخانه پرطرفدار دیگر برای همین هدف، “LlamaIndex” است. برای ساخت یک سند PDF که حاوی سوالات متداول کاربران است، کدهای زیر را در پایتون نوشته و آنها را اجرا کنید. 💡 آموزش ساخت چتبات فارسی کاملا آفلاین ➡ یاد بگیرید چگونه یک چتبات فارسی هوشمند را بدون نیاز به اینترنت طراحی و اجرا کنید. # import libraries import os from langchain_community.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.prompts import ChatPromptTemplate from langchain.chat_models import ChatOpenAI OPENAI_API_KEY = os.getenv('OPENAI_API_KEY') # add your OpenAI API Key # for this example I used Alphabet Inc 10-K Report 2022 # https://www.sec.gov/Archives/edgar/data/1652044/000165204423000016/goog-20221231.htm DOC_PATH = "../alphabet_10K_2022.pdf" CHROMA_PATH = "your_db_name" # ----- Data Indexing Process ----- # load your pdf doc loader = PyPDFLoader(DOC_PATH) pages = loader.load() # split the doc into smaller chunks i.e. chunk_size=500 text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) chunks = text_splitter.split_documents(pages) # get OpenAI Embedding model embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY) # embed the chunks as vectors and load them into the database db_chroma = Chroma.from_documents(chunks, embeddings, persist_directory=CHROMA_PATH) # ----- Retrieval and Generation Process ----- # this is an example of a user question (query) query = 'what are the top risks mentioned in the document?' # retrieve context - top 5 most relevant (closests) chunks to the query vector # (by default Langchain is using cosine distance metric) docs_chroma = db_chroma.similarity_search_with_score(query, k=5) # generate an answer based on given user query and retrieved context information context_text = "nn".join([doc.page_content for doc, _score in docs_chroma]) # you can use a prompt template PROMPT_TEMPLATE = """ Answer the question based only on the following context: {context} Answer the question based on the above context: {question}. Provide a detailed answer. Don’t justify your answers. Don’t give information not mentioned in the CONTEXT INFORMATION. Do not say "according to the context" or "mentioned in the context" or similar. """ # load retrieved context and user query in the prompt template prompt_template = ChatPromptTemplate.from_template(PROMPT_TEMPLATE) prompt = prompt_template.format(context=context_text, question=query) # call LLM model to generate the answer based on the given context and query model = ChatOpenAI() response_text = model.predict(prompt) """ Generated response: The top risks mentioned in the provided context are: ۱. Decline in the value of investments ۲. Lack of adoption of products and services ۳. Interference or interruption from various factors such as modifications, terrorist attacks, natural disasters, etc. ۴. Compromised trade secrets and legal and financial risks ۵. Reputational, financial, and regulatory exposure ۶. Abuse of platforms and misuse of user data ۷. Errors or vulnerabilities leading to service interruptions or failure ۸. Risks associated with international operations. """ سخن پایانی پایپلاینها در RAG پایپلاینها در RAG بازوی قدرتمند توسعهدهندگان مدلهای هوش مصنوعی هستند؛ چراکه با کمک این ویژگی، میتوان دانشی به مدل آموخت که در فضاهای توسعه اولیه، در اختیار قرار نگرفتند. استفاده از پایپلاین متخصصان را قادر میسازد تا مدلهای خود را کارآمد کنند؛ مدلهایی که میتوانند پاسخ سوالات دقیق و جزئی کاربران را هم بدهند. ما در نیک آموز منتظر نظرات شما در خصوص این مقاله هستیم. سوالات متداول پایپلاینها در RAG ۱. پایپلاینها در RAG چه مشکلی از مدلهای هوش مصنوعی مولد را حل میکنند؟ پایپلاینها در RAG به مدلهای زبان بزرگ کمک میکنند تا به اطلاعاتی دسترسی پیدا کنند که در زمان آموزش اولیه در اختیارشان نبوده است. با استفاده از این روش، مدل میتواند دادههای جدید و تخصصی را از منابع خارجی بازیابی کند و پاسخهای دقیقتر و مرتبطتری به سوالات کاربران ارائه دهد. ۲. چرا مدلهای LLM به تنهایی برای پاسخگویی به همه سوالات کافی نیستند؟ مدلهای LLM با وجود قدرت بالا، دانش محدودی دارند که به دادههای آموزشی آنها وابسته است. به همین دلیل ممکن است در مواجهه با موضوعات خاص یا اطلاعات جدید دچار خطا یا هذیانگویی شوند. استفاده از پایپلاینها در RAG باعث میشود مدل بتواند به منابع دانش اضافی دسترسی داشته باشد و پاسخهای قابل اعتمادتری تولید کند. ۳. تکنیک RAG چگونه دانش مدلهای هوش مصنوعی را افزایش میدهد؟ در تکنیک RAG ابتدا اطلاعات مرتبط از یک پایگاه داده بازیابی میشود و سپس این اطلاعات همراه با سوال کاربر به مدل زبان داده میشود تا پاسخ نهایی تولید شود. این ساختار در قالب پایپلاینها در RAG باعث میشود مدل بتواند از دانش خارجی برای تولید پاسخهای دقیقتر استفاده کند. ۴. پایپلاینهای RAG معمولاً از چند مرحله اصلی تشکیل میشوند؟ پایپلاینها در RAG معمولاً شامل دو مرحله اصلی هستند: مرحله ایندکس کردن دادهها و مرحله بازیابی و تولید پاسخ. در مرحله اول دادهها آمادهسازی و ذخیره میشوند و در مرحله دوم اطلاعات مرتبط بازیابی شده و برای تولید پاسخ به مدل داده میشود. ۵. در مرحله ایندکس کردن دادهها در پایپلاینها در RAG چه اتفاقی میافتد؟ در این مرحله ابتدا دادهها بارگذاری میشوند، سپس اسناد بزرگ به بخشهای کوچکتر تقسیم میشوند. پس از آن این بخشها به بردارهای عددی تبدیل شده و در یک پایگاه داده برداری ذخیره میشوند تا در زمان پرسش کاربر بتوان آنها را سریع جستوجو کرد. ۶. چرا در پایپلاینها در RAG اسناد به قطعات کوچکتر تقسیم میشوند؟ تقسیم اسناد به بخشهای کوچک باعث میشود سیستم بتواند بخشهای دقیقتر و مرتبطتری را هنگام جستوجو پیدا کند. این کار سرعت و دقت بازیابی اطلاعات را افزایش میدهد و در نهایت کیفیت پاسخ تولیدشده توسط مدل را بهبود میدهد. ۷. نقش Embedding در پایپلاینهای RAG چیست؟ Embedding دادهها را به بردارهای عددی تبدیل میکند تا سیستم بتواند شباهت معنایی بین متنها را محاسبه کند. در پایپلاینها در RAG هم اسناد و هم سوال کاربر به بردار تبدیل میشوند تا امکان مقایسه و پیدا کردن اطلاعات مرتبط فراهم شود. ۸. پایگاه داده برداری چه نقشی در عملکرد پایپلاینها در RAG دارد؟ پایگاه داده برداری محل ذخیره Embeddingهای تولیدشده از اسناد است. وقتی کاربر سوالی میپرسد، سیستم بردار سوال را با بردارهای موجود در این پایگاه مقایسه میکند و مرتبطترین اطلاعات را برای تولید پاسخ بازیابی میکند. ۹. در مرحله Retrieval در پایپلاینهای RAG چه عملیاتی انجام میشود؟ در این مرحله سوال کاربر به بردار تبدیل میشود و سپس با بردارهای ذخیرهشده در پایگاه داده مقایسه میشود. سیستم نزدیکترین و مرتبطترین بخشهای اطلاعاتی را پیدا کرده و آنها را برای تولید پاسخ به مدل زبان ارسال میکند. ۱۰. چه ابزارهایی برای ساخت یک پایپلاین ساده RAG در پایتون استفاده میشوند؟ برای پیادهسازی پایپلاینها در RAG معمولاً از ابزارهایی مانند LangChain برای ساخت جریان کاری، OpenAI Embeddings برای تبدیل متن به بردار، Chroma بهعنوان پایگاه داده برداری و یک مدل LLM از OpenAI برای تولید پاسخ استفاده میشود. 💡 اگر این مطلب برای شما مفید بود، ادامه مقالات را بخوانید تا با نکات و جزئیات بیشتری آشنا شوید: راهنمای کامل انواع یادگیری ماشین و کاربردهای هر کدام مدل زبانی بزرگ یا LLM چیست؟ آشنایی با نحوه کار، ویژگی ها و کاربردها مبارزه با پولشویی با هوش مصنوعی | راهکارهایی نوین در امنیت مالی هوش مصنوعی چیست؟ از مزایا و معایب تا امکانات بی پایان انواع AI چه رتبه ای میدهید؟ میانگین ۲.۸ / ۵. از مجموع ۸ اولین نفر باش معرفی نویسنده مقالات 35 مقاله توسط این نویسنده نگین فاتحی از اسفند 99 مشغول گشتوگذار توی دنیای کلمات هستم؛ با این هدف که خوب بنویسم و این چشمانداز که کمکهای موثری کنم. حالا سه ساله که توی زمینههای گوناگون بازاریابی آنلاین مطالعه میکنم و یکی از حوزههای موردعلاقم، رفتارشناسی مخاطبان این فضا هست. دستاوردهای این مطالعه شده نوشتن محتوایی که امیدوارم شما بخونی، لُبکلام رو متوجه بشی، لذت ببری و با دست پر صفحه رو ترک کنی؛ شایدم بقیه نوشتههام رو بخونی :) معرفی محصول مسعود طاهری، حمیدرضا حداد دوره آموزش Vector Database [با رویکرد تصویر و متون فارسی] 1,500,000 تومان مقالات مرتبط ۰۳ آبان هوش مصنوعی راهنمای کاربردی اصطلاحات هوش مصنوعی در ۲۰۲۶ تیم فنی نیک آموز ۰۴ مهر هوش مصنوعی سیستم های RAG: بررسی ۳ معماری در مدلهای زبانی بزرگ تیم فنی نیک آموز ۲۳ شهریور نیک آموز نیوز هوش مصنوعی اولین مدل هوش مصنوعی OpenAI با قابلیت استدلال با نام o1 منتشر شد تیم فنی نیک آموز ۲۰ شهریور هوش مصنوعی ساخت RAG با Query Routing در ۸ گام کاربردی نگین فاتحی دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ