Use ScyllaDB to perform semantic search across movie plot descriptions. আমরা প্রদর্শন করার জন্য একটি নমুনা চলচ্চিত্র সুপারিশ অ্যাপ্লিকেশন তৈরি করেছি নমুনা অ্যাপ্লিকেশন আপনাকে ScyllaDB এর সাথে নিম্ন দীর্ঘস্থায়ী সিম্যান্টিক অনুসন্ধান এবং ভেক্টর ভিত্তিক অ্যাপ্লিকেশন তৈরি করার একটি সহজ উপায় দেয়। ScyllaDB এর নতুন ভেক্টর অনুসন্ধান ক্ষমতা Vector Search Early Access প্রোগ্রামের সাথে যোগ দিন Vector Search Early Access প্রোগ্রামের সাথে যোগ দিন এই পোস্টে, আমরা দেখাব কিভাবে সিমেন্টিক অনুসন্ধান চলচ্চিত্র স্লোগান বর্ণনাগুলির মধ্যে চলচ্চিত্র অনুসন্ধান করতে, কীওয়ার্ডের পরিবর্তে অর্থ অনুসন্ধান করতে. এই উদাহরণটি দেখায় কিভাবে আপনি আপনার বিদ্যমান অ্যাপ্লিকেশনে ScyllaDB ভেক্টর অনুসন্ধান যোগ করতে পারেন. অ্যাপ্লিকেশনের মধ্যে ডুবে যাওয়ার আগে, আমরা সিমেন্টিক অনুসন্ধানের দ্বারা আমরা কী বোঝাই তা পরিষ্কার করি এবং অনুরূপতা ফাংশনগুলি সম্পর্কে কিছু контекст প্রদান করি। ভেক্টর অনুরূপতা ফাংশন দুই ভেক্টরের মধ্যে অনুরূপতা বিভিন্নভাবে গণনা করা যেতে পারে. সবচেয়ে সাধারণ পদ্ধতি হল , (ভিত্তিক পণ্য) এবং ScyllaDB ভেক্টর সার্চ এই সমস্ত ফাংশন সমর্থন করে। কাশ্মীরের অনুরূপতা ডট পণ্য l2 টেক্সট অন্তর্ভুক্ত করার ক্ষেত্রে, কোজিন অনুরূপতা সবচেয়ে বেশি ব্যবহৃত অনুরূপতা ফাংশন। কারণ, টেক্সটের সাথে কাজ করার সময়, আমরা মূলত ভেক্টরের দিকের উপর দৃষ্টি নিবদ্ধ করি, তার মাত্রার পরিবর্তে। উদাহরণস্বরূপ, একই বিষয় নিয়ে একটি সংক্ষিপ্ত ডকুমেন্ট (1 পৃষ্ঠা) এবং একটি দীর্ঘ ডকুমেন্ট (10 পৃষ্ঠা) এখনও ভেক্টর স্পেসে একই দিক নির্দেশ করবে যদিও তারা বিভিন্ন দৈর্ঘ্য। বাস্তবে, অনেক embedded মডেল (যেমন, ) স্বাভাবিক ভেক্টর উৎপাদন করে. স্বাভাবিক ভেক্টরগুলির সবগুলি একই দৈর্ঘ্য (মাত্রা 1)। স্বাভাবিক ভেক্টরগুলির জন্য, cosine অনুরূপতা এবং পয়েন্ট পণ্য একই ফলাফল ফেরত দেয়। কারণ cosine অনুরূপতা পয়েন্ট পণ্যটি ভেক্টরগুলির মাত্রা দ্বারা বিভক্ত করে, যা সবগুলি 1 হয় যখন ভেক্টরগুলি স্বাভাবিক হয়। উদ্বোধনী মডেল এখন যেহেতু আপনি সিমেন্টিক অনুরূপতা ফাংশনগুলির একটি ভাল বোঝার আছে, তাহলে আমরা ব্যাখ্যা করি কিভাবে সুপারিশ অ্যাপ্লিকেশন কাজ করে। অ্যাপ বিস্তারিত অ্যাপ্লিকেশনটি ব্যবহারকারীদের কী ধরনের চলচ্চিত্র দেখতে চায় তা লিখতে দেয়. উদাহরণস্বরূপ, যদি আপনি "আমেরিকান ফুটবল" টাইপ করেন, তবে অ্যাপ্লিকেশনটি আপনার ইনপুটটি দেখতে চায়। ডাটাবেসে সংরক্ষিত. প্রথম ফলাফলটি সেরা ম্যাচ, তারপর অন্যান্য অনুরূপ সুপারিশ। . plots of movies ScyllaDB Vector Search আপনি খুঁজে পেতে পারেন সেটিং নির্দেশাবলী এবং একটি ডাটা সেটের জন্য, আমরা একটি TMDB ডেটা সেট পুনরায় ব্যবহার করছি . GitHub এ সূত্র কোড ধাপে ধাপে টিউটোরিয়াল উপলব্ধ কাশ্মীর প্রকল্পের প্রয়োজনীয়তা অ্যাপ্লিকেশনটি চালানোর জন্য, আপনাকে একটি ScyllaDB ক্লাউড অ্যাকাউন্ট এবং একটি ভেক্টর অনুসন্ধান সক্ষম গ্রুপের প্রয়োজন। ! শুরু করতে এখানে নির্দেশাবলী অনুসরণ করুন অ্যাপ্লিকেশনটি কয়েকটি পাইথন প্যাকেজ উপর নির্ভর করে: ScyllaDB Python ড্রাইভার - ScyllaDB সংযোগ এবং অনুরোধ করার জন্য। শব্দ ট্রান্সফরমারগুলি - স্থানীয়ভাবে অন্তর্ভুক্তগুলি উত্পাদন করতে OpenAI বা অন্যান্য পেমেন্ট এপিআইগুলি প্রয়োজন না। স্ট্রিমলাইট - UI জন্য। পাইডান্টিক্স - অনুসন্ধানের ফলাফলগুলির সাথে কাজ করা সহজ করতে। ডিফল্টে, অ্যাপটি ব্যবহার করে একটি মডেল যাতে কেউ স্থানীয়ভাবে ভারী কম্পিউটার প্রয়োজনীয়তা ছাড়াই এটি চালাতে পারে। , এই উদাহরণ চালানোর জন্য কোনও বাণিজ্যিক বা অর্থ প্রদান পরিষেবা প্রয়োজন হয় না। মিনিএলএম-এল৬ v2 ScyllaDB মেঘ কনফিগারেশন এবং ডাটাবেস সংযোগ A ফাইলগুলি ScyllaDB ক্লাউড ক্রেডিটেশনগুলি সংরক্ষণ করে, হোস্ট ঠিকানা এবং সংযোগের বিবরণ সহ। config.py একটি পৃথক ScyllaDB নিম্নলিখিত বিষয়গুলি পরিচালনা করুন: সাহায্য মডিউল সংযোগ এবং সেশন তৈরি ডেটা প্রবেশ এবং জিজ্ঞাসা পরিষ্কার ডাটাবেস ইন্টারফেসের জন্য সাহায্যকারী ফাংশন প্রদান ডাটাবেস পরিকল্পনা পরিকল্পনাটি নির্ধারিত হয়েছে A ফাইল, প্রকল্পের মাইগ্রেশন স্ক্রিপ্ট চালানোর সময় চালানো. এটি অন্তর্ভুক্ত: schema.cql Keyspace সৃষ্টি (একটি রিপ্লিকেশন ফ্যাক্টর সঙ্গে 3) চলচ্চিত্রের জন্য টেবিল সংজ্ঞা, release_date, Title, genre, and plot মত ক্ষেত্রগুলি সংরক্ষণ ভেক্টর অনুসন্ধান ইন্ডেক্স CREATE KEYSPACE recommend WITH replication = {'class': 'NetworkTopologyStrategy', 'replication_factor': '3'}; CREATE TABLE recommend.movies ( id INT, release_date TIMESTAMP, title TEXT, tagline TEXT, genre TEXT, imdb_id TEXT, poster_url TEXT, plot TEXT, plot_embedding VECTOR<FLOAT, 384>, PRIMARY KEY (id) ) WITH cdc = {'enabled': 'true'}; CREATE INDEX IF NOT EXISTS ann_index ON recommend.movies(plot_embedding) USING 'vector_index' WITH OPTIONS = { 'similarity_function': 'DOT_PRODUCT' }; অতিথিদের সঙ্গে হোস্ট ডিজিটাল.সিএল গিটহাব পরিকল্পনা উল্লেখ করে: 'প্লট' - টেক্সট, অনুরূপতা তুলনায় ব্যবহৃত চলচ্চিত্রের বর্ণনা সংরক্ষণ করে। 'plot_embedding' - ভেক্টর, প্লটের অন্তর্ভুক্ত প্রতিনিধিত্ব, 384 মাত্রার ভেক্টর ডেটা টাইপ ব্যবহার করে সংজ্ঞায়িত (Sentence Transformers মডেলের সাথে মিলিত)। 'প্রাইমারি কী' - id দ্বারা অনুসন্ধান করা দক্ষ অনুসন্ধানের জন্য পার্টিশন কী হিসাবে id CDC সক্ষম - ScyllaDB ভেক্টর অনুসন্ধানের জন্য প্রয়োজনীয়। 'ভেক্টর ইনডেক্স' - একটি নিকটতম নিকটতম প্রতিবেশী (ANN) ইনডেক্স যা কার্যকর ভেক্টর চাহিদাগুলি সক্ষম করার জন্য plot_embedding কলামে তৈরি করা হয়। এই সিস্টেমের উদ্দেশ্য হল প্লট অন্তর্ভুক্তগুলিতে কার্যকর অনুসন্ধান এবং ভেক্টরগুলির পাশাপাশি অতিরিক্ত তথ্য সংরক্ষণ করা। অন্তর্ভুক্ত একটি Embedding Creator ক্লাস Sentence Transformers দিয়ে টেক্সট embedding জেনারেশন পরিচালনা করে. ফাংশন কোনও টেক্সট ইনপুট গ্রহণ করে এবং আপনি ScyllaDB এর 'ভেক্টর' কলামে ইনপুট করতে পারেন যে ফ্লুট মানের একটি তালিকা ফেরত দেয়. ভেক্টর অনুসন্ধানের মাধ্যমে বাস্তবায়িত সুপারিশ অ্যাপ্লিকেশনের প্রধান ফাংশন হল চলচ্চিত্র সুপারিশ প্রদান করা। এই সুপারিশগুলি ভেক্টর অনুসন্ধান ব্যবহার করে বাস্তবায়িত হয়। এই হ্যান্ডেল recommender ইনপুট টেক্সট গ্রহণ টেক্সটকে অন্তর্ভুক্ত করা ভেক্টর অনুসন্ধান from db.scylladb import ScyllaClient from embedding_creator import EmbeddingCreator from models import Movie class MovieRecommender: def __init__(self): self.scylla_client = ScyllaClient() self.embedding_creator = EmbeddingCreator("all-MiniLM-L6-v2") def similar_movies(self, user_query: str, top_k=5) -> list[Movie]: db_client = ScyllaClient() user_query_embedding = self.embedding_creator.create_embedding(user_query) db_query = f""" SELECT * FROM recommend.movies ORDER BY plot_embedding ANN OF %s LIMIT %s; """ values = [user_query_embedding, top_k] results = db_client.query_data(db_query, values) return [Movie(**row) for row in results] অতিথিদের সঙ্গে হোস্ট ডিজিটাল. পাই গিটহাব চলুন ভেক্টর অনুসন্ধানের চাহিদা ভাগ করে ফেলি: SELECT * FROM recommend.movies ORDER BY plot_embedding ANN OF [0.1, 0.2, 0.3, …] LIMIT 5; ব্যবহারকারীর ইনপুটটি প্রথমে একটি অন্তর্ভুক্ত করা হয়, যা নিশ্চিত করে যে আমরা অন্তর্ভুক্ত করাকে অন্তর্ভুক্ত করার সাথে তুলনা করছি। টেবিলের লাইনগুলি ANN অপারেটর (ANN OF) ব্যবহার করে অনুরূপতা দ্বারা সাজানো হয়। ফলাফল সীমিত হয় পাঁচটি অনুরূপ চলচ্চিত্রে। SELECT বাক্যটি টেবিলের সমস্ত কলামগুলি পুনরুদ্ধার করে। অনুরূপতা অনুসন্ধানে, আমরা দুটি ভেক্টরের মধ্যে দূরত্ব গণনা করি. ভেক্টর স্পেসে ভেক্টরগুলি যত কাছাকাছি থাকে, তত বেশি তাদের ভিত্তিক বিষয়বস্তু অনুরূপ। অথবা, অন্য কথায়, একটি ছোট দূরত্ব উচ্চতর অনুরূপতা প্রদর্শন করে। স্ট্রিমিং UI, সংজ্ঞায়িত মধ্যে সবকিছুকে একসঙ্গে জড়িয়ে ধরুন। app.py এটি ব্যবহারকারীর জিজ্ঞাসা গ্রহণ করে, এটি অন্তর্ভুক্ত করে এবং একটি ভেক্টর অনুসন্ধান পরিচালনা করে। UI সেরা ম্যাচ এবং অন্যান্য অনুরূপ চলচ্চিত্র সুপারিশের একটি তালিকা প্রদর্শন করে। নিজেই চেষ্টা করুন! আপনি যদি ScyllaDB ভেক্টর সার্চ দিয়ে নির্মাণ শুরু করতে চান তবে আপনার কয়েকটি বিকল্প রয়েছে: GitHub এ সূত্র কোড অনুসন্ধান করুন আপনার কম্পিউটারে অ্যাপ্লিকেশন সেট আপ করার জন্য README ব্যবহার করুন অ্যাপ্লিকেশনটি শূন্য থেকে তৈরি করার জন্য টিউটোরিয়ালটি অনুসরণ করুন আপনার যদি প্রশ্ন থাকে, তাহলে ব্যবহার করুন এবং আমরা সাহায্য করতে খুশি হব। ফোরাম Attila Tóth সম্পর্কে তিনি টিউটোরিয়াল এবং ব্লগ পোস্ট লিখেন, ইভেন্টে কথা বলেন, ডেমো তৈরি করেন এবং ডেভেলপারদের উচ্চ দক্ষতা অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। অ্যাথলি টোথ