برنامه نویسی

chatbot rag را با Langchain ، Milvus ، Anthropic Claude 3 Haiku و Voyage-3-Large بسازید

آشنایی با راگ

نسل بازیابی (RAG) یک تغییر دهنده بازی برای برنامه های Genai ، به ویژه در AI مکالمه است. این ترکیب قدرت مدل های بزرگ زبان از قبل آموزش دیده (LLMS) مانند GPT OpenAI را با منابع دانش خارجی ذخیره شده در پایگاه داده های بردار مانند Milvus و Zilliz Cloud ترکیب می کند و باعث می شود تولید پاسخ دقیق تر ، متنی و به روز تر باشد. یک خط لوله RAG معمولاً از چهار مؤلفه اصلی تشکیل شده است: یک بانک اطلاعاتی بردار ، یک مدل تعبیه ، LLM و یک چارچوب.

اجزای کلیدی که ما برای این chatbot chatbot استفاده خواهیم کرد

این آموزش به شما نشان می دهد که چگونه می توانید با استفاده از اجزای زیر ، یک چت بابات RAG ساده را در پایتون بسازید:

  • Langchain: یک چارچوب منبع باز که به شما کمک می کند تا تعامل بین LLM ها ، فروشگاه های وکتور ، مدل های تعبیه شده و غیره را ارکستر کنید و باعث می شود یک خط لوله RAG را آسان تر کنید.

  • Milvus: یک بانک اطلاعاتی وکتور منبع باز برای ذخیره ، فهرست و جستجوی تعبیه های وکتور در مقیاس بزرگ به طور کارآمد ، مناسب برای موارد استفاده مانند RAG ، جستجوی معنایی و سیستم های توصیه کننده. اگر از مدیریت زیرساخت های خود متنفر هستید ، توصیه می کنیم از Zilliz Cloud استفاده کنید ، که یک سرویس پایگاه داده وکتور کاملاً مدیریت شده است که بر روی Milvus ساخته شده است و یک ردیف رایگان ارائه می دهد که حداکثر 1 میلیون بردار را پشتیبانی می کند.

  • Claude 3 Anthropic: این مدل پیشرفته زبان AI از انسان شناسی بر ایمنی و تراز متمرکز است ، قادر به تولید متن منسجم و آگاه است. این در نوشتن خلاق ، هوش مصنوعی مکالمه و خلاصه روشنگری عالی است. ایده آل برای ایجاد محتوای جذاب و در عین حال پیروی از استانداردهای اخلاقی و قصد کاربر.
  • Voyage-3 LARGE: این مدل برای کارهای تولیدی طراحی شده است و خلاقیت پیشرفته و درک متنی را ارائه می دهد. با آموزش قوی در مجموعه داده های متنوع ، در تولید روایت ها و گفتگوهای منسجم ، آن را برای برنامه های کاربردی در داستان پردازی ، ایجاد محتوا و تجربیات تعاملی که در آن خروجی تخیلی ضروری است ، ایده آل می کند.

با پایان این آموزش ، شما یک چت بابات عملکردی خواهید داشت که می تواند بر اساس یک پایگاه دانش سفارشی به سؤالات پاسخ دهد.

توجه: از آنجا که ممکن است در آموزش های خود از مدل های اختصاصی استفاده کنیم ، مطمئن شوید که از قبل کلید API لازم را دارید.

مرحله 1: Langchain را نصب و تنظیم کنید

%pip install --quiet --upgrade langchain-text-splitters langchain-community langgraph
حالت تمام صفحه را وارد کنید

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

مرحله 2: کلود 3 هایکو را نصب و راه اندازی کنید

pip install -qU "langchain[anthropic]"


import getpass
import os

if not os.environ.get("ANTHROPIC_API_KEY"):
  os.environ["ANTHROPIC_API_KEY"] = getpass.getpass("Enter API key for Anthropic: ")

from langchain.chat_models import init_chat_model

llm = init_chat_model("claude-3-haiku-20240307", model_provider="anthropic")
حالت تمام صفحه را وارد کنید

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

مرحله 3: نصب و راه اندازی Voyage-3-Large

pip install -qU langchain-voyageai


import getpass
import os

if not os.environ.get("VOYAGE_API_KEY"):
  os.environ["VOYAGE_API_KEY"] = getpass.getpass("Enter API key for Voyage AI: ")

from langchain-voyageai import VoyageAIEmbeddings

embeddings = VoyageAIEmbeddings(model="voyage-3-large")
حالت تمام صفحه را وارد کنید

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

مرحله 4: Milvus را نصب و تنظیم کنید

pip install -qU langchain-milvus


from langchain_milvus import Milvus

vector_store = Milvus(embedding_function=embeddings)
حالت تمام صفحه را وارد کنید

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

مرحله 5: یک chatbot پارچه ای بسازید

اکنون که تمام مؤلفه ها را تنظیم کرده اید ، بیایید شروع به ساخت یک چت بابات ساده کنیم. ما از Doc Milvus Introduction به عنوان یک پایگاه دانش خصوصی استفاده خواهیم کرد. می توانید آن را با مجموعه داده خود جایگزین کنید تا chatbot RAG خود را سفارشی کنید.

import bs4
from langchain import hub
from langchain_community.document_loaders import WebBaseLoader
from langchain_core.documents import Document
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langgraph.graph import START, StateGraph
from typing_extensions import List, TypedDict

# Load and chunk contents of the blog
loader = WebBaseLoader(
    web_paths=("https://milvus.io/docs/overview.md",),
    bs_kwargs=dict(
        parse_only=bs4.SoupStrainer(
            class_=("doc-style doc-post-content")
        )
    ),
)

docs = loader.load()

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
all_splits = text_splitter.split_documents(docs)

# Index chunks
_ = vector_store.add_documents(documents=all_splits)

# Define prompt for question-answering
prompt = hub.pull("rlm/rag-prompt")


# Define state for application
class State(TypedDict):
    question: str
    context: List[Document]
    answer: str


# Define application steps
def retrieve(state: State):
    retrieved_docs = vector_store.similarity_search(state["question"])
    return {"context": retrieved_docs}


def generate(state: State):
    docs_content = "nn".join(doc.page_content for doc in state["context"])
    messages = prompt.invoke({"question": state["question"], "context": docs_content})
    response = llm.invoke(messages)
    return {"answer": response.content}


# Compile application and test
graph_builder = StateGraph(State).add_sequence([retrieve, generate])
graph_builder.add_edge(START, "retrieve")
graph = graph_builder.compile()
حالت تمام صفحه را وارد کنید

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

chatbot را تست کنید

آره شما chatbot خود را ساخته اید. بیایید از chatbot سوال بپرسیم.

response = graph.invoke({"question": "What data types does Milvus support?"})
print(response["answer"])
حالت تمام صفحه را وارد کنید

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

نمونه خروجی

Milvus supports various data types including sparse vectors, binary vectors, JSON, and arrays. Additionally, it handles common numerical and character types, making it versatile for different data modeling needs. This allows users to manage unstructured or multi-modal data efficiently.
حالت تمام صفحه را وارد کنید

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

نکات بهینه سازی

در هنگام ساخت سیستم RAG خود ، بهینه سازی برای اطمینان از عملکرد اوج و کارآیی مهم است. در حالی که تنظیم مؤلفه ها اولین قدم اساسی است ، تنظیم دقیق هر یک به شما در ایجاد راه حلی کمک می کند که حتی بهتر عمل کند و یکپارچه باشد. در این بخش ، ما برخی از نکات عملی را برای بهینه سازی همه این مؤلفه ها به اشتراک می گذاریم و به شما می دهد تا برنامه های خاردار باهوش تر ، سریعتر و پاسخگوتر را بسازید.

نکات بهینه سازی Langchain

برای بهینه سازی Langchain ، با ساختار کارآمد زنجیرها و عوامل خود ، روی به حداقل رساندن عملیات اضافی در گردش کار خود تمرکز کنید. برای جلوگیری از محاسبات مکرر ، سرعت بخشیدن به سیستم خود و آزمایش با طراحی مدولار ، از حافظه پنهان استفاده کنید تا اطمینان حاصل شود که اجزای مانند مدل ها یا پایگاه داده ها به راحتی می توانند تعویض شوند. این کار انعطاف پذیری و کارآیی را فراهم می کند و به شما امکان می دهد بدون تأخیر یا عوارض غیر ضروری سیستم خود را به سرعت مقیاس کنید.

نکات بهینه سازی Milvus

Milvus به عنوان یک بانک اطلاعاتی وکتور بسیار کارآمد ، برای کارهای بازیابی در یک سیستم RAG بسیار مهم است. برای بهینه سازی عملکرد آن ، اطمینان حاصل کنید که شاخص ها به درستی ساخته شده اند تا سرعت و دقت تعادل برقرار کنند. برای استفاده از HNSW (دنیای کوچک قابل پیمایش سلسله مراتبی) برای نزدیکترین جستجوی همسایه که در آن زمان پاسخ بسیار مهم است ، استفاده کنید. داده های تقسیم بندی بر اساس الگوهای استفاده می توانند عملکرد پرس و جو را افزایش داده و زمان بار را کاهش دهند و باعث ایجاد مقیاس پذیری بهتر می شوند. به طور مرتب تنظیمات حافظه پنهان را بر اساس فرکانس پرس و جو تنظیم و تنظیم کنید تا از تأخیر در هنگام بازیابی داده جلوگیری کنید. از پردازش دسته ای برای درج بردار استفاده کنید ، که می تواند مشاجره قفل پایگاه داده را به حداقل برساند و توان کلی را افزایش دهد. علاوه بر این ، پارامترهای مدل را با آزمایش با ابعاد بردارها تنظیم کنید. ابعاد بالاتر می تواند دقت بازیابی را بهبود بخشد اما ممکن است زمان جستجو را افزایش دهد ، نیاز به تعادل متناسب با مورد استفاده خاص و زیرساخت های سخت افزاری شما.

نکات بهینه سازی Haiku انسان شناسی 3

Claude 3 Haiku برای کارآیی طراحی شده است ، و این یک انتخاب عالی برای برنامه های RAG با تأخیر کم است. بهینه سازی استفاده از توکن با ساختار باعث می شود که بطور خلاصه ، از بین بردن متن اضافی ، و پیام های سیستم اعمال شده به طور مؤثر برای هدایت پاسخ ها. از تماس با عملکرد در صورت کاربرد برای بارگیری وظایف پردازش ساختار یافته و بهبود قابلیت اطمینان پاسخ استفاده کنید. نمایش داده های فرآیند دسته ای در صورت امکان برای کاهش سربار API و تقویت توان. اگر تأخیر بسیار مهم است ، ذخیره سؤالات مکرر و پاسخ های قبل از تولید را برای سؤالات مشترک در نظر بگیرید. کنترل پاسخ خوب با دمای و نمونه برداری T بالا. مقادیر دمای پایین تر (به عنوان مثال ، 0.2-0.3) به حفظ سازگاری در کارهای بازیابی واقعی کمک می کند. از حالت جریان برای برنامه های کاربردی در زمان واقعی استفاده کنید تا در هنگام پردازش سوابق بزرگ ، پاسخ های جزئی سریعتر دریافت کنید. به طور مرتب پارامترهای مدل را بر اساس معیارهای عملکرد ارزیابی و تنظیم کنید تا سرعت و دقت در خط لوله RAG خود تعادل برقرار کنید.

نکات بهینه سازی Voyage-3 بزرگ

Voyage-3-LARGE قابلیت های استدلال پیشرفته ای را فراهم می کند ، و آن را برای کارهای پیچیده پارچه ای که نیاز به درک عمیق متنی دارند ، ایده آل می کند. بازیابی را با اجرای یک سیستم رتبه بندی چند مرحله ای که در هنگام فیلتر کردن اطلاعات با کیفیت پایین ، اسناد بسیار مرتبط را در اولویت قرار می دهد ، بهینه سازی کنید. برای بهبود درک مطلب ، از ارسال های ساختاری با زمینه و نمایش داده های مشخص شده استفاده کنید. تنظیمات درجه حرارت (0.1-0.3) و تنظیمات TOP-K و T را تنظیم کنید تا دقت و جلوگیری از تغییرپذیری بیش از حد. از استنتاج موازی استفاده کنید و برای بهبود راندمان پردازش درخواست دسته بندی کنید. برای کاهش هزینه ها و تأخیر ، حافظه پنهان را برای پرس و جوهای فرکانس بالا اهرم کنید. در تنظیمات چند مدل ، Voyage-3-LARGE را برای کارهای استدلال پیچیده و در حالی که از مدل های کوچکتر برای نمایش داده های پیچیده کمتری استفاده می کنید ، مستقر کنید تا هزینه و عملکرد را به طور مؤثر تعادل دهید.

با اجرای این نکات در سراسر مؤلفه های خود ، می توانید عملکرد و عملکرد سیستم RAG خود را ارتقا دهید ، و اطمینان حاصل کنید که از نظر سرعت و دقت بهینه شده است. تست ، تکرار و پالایش خود را ادامه دهید تا در دنیای همیشه در حال توسعه AI پیشرفت کنید.

ماشین حساب هزینه Rag: یک ابزار رایگان برای محاسبه هزینه خود در چند ثانیه

تخمین هزینه خط لوله تولید بازیابی (RAG) شامل تجزیه و تحلیل هزینه ها در ذخیره بردار ، منابع محاسبه و استفاده از API است. درایورهای کلیدی هزینه شامل نمایش داده های پایگاه داده بردار ، تولید جاسازی و استنباط LLM است.

ماشین حساب هزینه Rag ابزاری رایگان است که به سرعت هزینه ساخت یک خط لوله RAG ، از جمله تکه ، تعبیه ، ذخیره بردار/جستجو و تولید LLM را تخمین می زند. همچنین به شما کمک می کند تا فرصت های صرفه جویی در هزینه را شناسایی کرده و حداکثر 10 برابر هزینه در پایگاه داده های بردار را با گزینه بدون سرور بدست آورید.

اکنون هزینه پارچه خود را محاسبه کنید.

هزینه پارچه خود را محاسبه کنیدهزینه پارچه خود را محاسبه کنید

چه چیزی یاد گرفته اید؟

چه چیزی یاد گرفته اید؟ وای ، چه سفری را با هم سوار کرده ایم! این آموزش نشان می دهد که چگونه می توان هر یک از مؤلفه های انتگرال را با هم بافتن برای ایجاد یک سیستم نسل بازیابی قدرتمند (RAG) که در دنیای برنامه های هوشمند می درخشد. شما دیده اید که چگونه چارچوب Langchain با ظرافت کل فرآیند را ارکستر می کند و قابلیت های هر عنصر را یکپارچه ادغام می کند. پایگاه داده وکتور Milvus ما را با قابلیت جستجوی سریع رعد و برق مجهز می کند ، و اطمینان می دهد که می توانید به اطلاعات مربوطه فوری دسترسی پیدا کنید ، مهم نیست که مجموعه داده شما چقدر گسترده باشد.

با استفاده از Claude 3 Haiku LLM ، شما اکنون ابزاری دارید که هوش مکالمه را سوخت می کند و به شما این امکان را می دهد تا پاسخ های منسجم ایجاد کنید که به نظر می رسد که از یک متخصص در این زمینه آمده است. در همین حال ، مدل تعبیه کننده نمایش های معنایی غنی را نشان می دهد که به سیستم شما کمک می کند تا زمینه و ظرافت مانند گذشته را درک کند. و بیایید آن نکات ارزشمند بهینه سازی و ماشین حساب هزینه مفید را که معرفی کرده ایم فراموش نکنیم – همه چیز در مورد حداکثر رساندن کارآیی و به حداقل رساندن سربار است!

بنابراین ، بگذارید تخیل شما وحشی شود! این درس ها را بگیرید ، شروع به ساختن کنید و از نوآوری برنامه های RAG خود دور نشوید. به بیرون بروید ، کاوش کنید و مرزهای آنچه را که می توانید ایجاد کنید فشار دهید. آینده روشن است و منتظر لمس شماست!

منابع بیشتر

🌟 علاوه بر این آموزش RAG ، پتانسیل کامل خود را با این منابع باورنکردنی برای افزایش مهارت های RAG خود رها کنید.

ما دوست داریم آنچه را که شما فکر می کنید بشنویم!

ما دوست داریم افکار شما را بشنویم! teact سؤالات یا نظرات خود را در زیر بگذارید یا به جامعه پر جنب و جوش Milvus Discord بپیوندید تا تجربیات خود را به اشتراک بگذارید ، سؤال کنید یا با هزاران نفر از علاقه مندان به هوش مصنوعی ارتباط برقرار کنید. سفر شما برای ما مهم است!

اگر این آموزش را دوست دارید ، با دادن یک ستاره Milvus Github ما ، حمایت خود را نشان دهید – این به معنای جهان برای ما است و به ما الهام می دهد تا ایجاد کنیم! 💖

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

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

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

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