RAG با Elastic و Amazon Bedrock؛ چت با دادهٔ خودت
خلاصهٔ کاملتر
آموزشی که AWS Marketplace منتشر کرده سراغ یه وضعیت آشنا رفته: کلی سازمان دادهٔ خودش رو از قبل تو Elasticsearch نگه میداره و حالا میخواد روش RAG بسازه (یعنی اول تکههای مرتبط رو از دادهٔ خودت پیدا کنی، بعد اونا رو میدی به مدل تا جواب بسازه). به گفتهٔ نویسنده، لازم نیست برای این کار یه دیتابیس برداری تازه به استکت اضافه کنی؛ همون Elastic Cloud هم جستوجوی متنی معمولی رو انجام میده، هم نقش vector store رو بازی میکنه.
مسیر کار سادهست: تو Amazon Bedrock دسترسی به مدل Titan Text G1 Express رو فعال میکنی، از کنسول Elastic یه Cloud ID و API key میگیری، و بعد با LangChain این دوتا رو به هم وصل میکنی. ساختن vector store خودش همینقدره:
vector_store = ElasticsearchStore(
es_cloud_id=ELASTIC_CLOUD_ID,
es_api_key=ELASTIC_API_KEY,
index_name="marketplace_index",
embedding=bedrock_embedding,
)ایندکسی که اسمش رو اینجا میدی، موقع ساختن embeddingها خودکار ساخته میشه. دادهٔ نمونه هم با RecursiveCharacterTextSplitter به تکههای ۵۱۲ توکنی با ۲۵۶ توکن همپوشانی شکسته و بعد تو همین ایندکس ذخیره میشه. مرحلهٔ آخر وصل کردن مدله: یه BedrockLLM با شناسهٔ amazon.titan-text-express-v1 میسازی و vector store رو به عنوان retriever به زنجیرهٔ RetrievalQA میدی.
retriever = vector_store.as_retriever()
qa = RetrievalQA.from_llm(
llm=llm,
retriever=retriever,
return_source_documents=True
)با return_source_documents=True جواب مدل همراه با سندهایی برمیگرده که ازشون استفاده کرده، و همین باعث میشه بتونی جواب رو راستیآزمایی کنی.
آموزش یه راه دوم هم نشون میده: مدلهای Bedrock مثل Titan و Claude و Cohere Command R از طریق Open Inference API خود Elasticsearch هم در دسترسن. اونجا سرویس رو amazonbedrock تعریف میکنی و میتونی پارامترهایی مثل temperature و سقف توکن خروجی رو هم کنترل کنی. نویسنده آخر مطلب تأکید کرده این راهنما فقط نقطهٔ شروعه و مسائل امنیت و دسترسپذیری برای محیط production توش بررسی نشده.
نکات کلیدی:
- برای RAG لازم نیست دیتابیس برداری جدا اضافه کنی؛ Elastic Cloud همزمان جستوجوی متنی و برداری رو پوشش میده.
- آموزش از LangChain با کلاسهای ElasticsearchStore، BedrockEmbeddings و RetrievalQA استفاده میکنه.
- مدل نمونه amazon.titan-text-express-v1 روی Amazon Bedrock هست و دسترسیش رو باید دستی فعال کنی.
- تکهبندی سندها با chunk_size=512 و chunk_overlap=256 انجام شده.
- راه دوم، Open Inference API خود Elasticsearch با سرویس amazonbedrock هست.




