যদি আপনার অনলাইন দোকানটি জানতো যে গ্রাহকরা কি চায়? যদি আপনার অনলাইন দোকানটি জানতো যে গ্রাহকরা কি চায়? তারা সীমিত, অপরিবর্তিত ডেটা উপর ভিত্তি করে "ভালোবাসা" বা "সম্মত" আইটেম প্রস্তাব করে। যখন ব্যবহারকারীরা নতুন (কল্ড-স্টার্ট সমস্যা), এবং তারা খুব কমই যথেষ্ট দ্রুত সংশোধন করে যখন ব্যবহারকারীর পছন্দগুলি বাস্তব সময়ে পরিবর্তিত হয়। Most recommendation engines are like helpful but slightly clueless assistants: struggle কিন্তু যদি আপনার সিস্টেম একটি বিপণনকারী হিসাবে - স্ট্যাটিক পণ্য ডেটা এবং বাস্তব সময়ের ব্যবহারকারীর আচরণ পৃষ্ঠের সাথে সংযুক্ত করা সঠিক সময়ে? সত্যিই ভাবি সঠিক আইটেম সত্যিই ভাবি ব্যবহার , যিনি এই ঐতিহ্যগত দুর্বলতাগুলি অতিক্রম করে আপনার ডেটাকে ভেক্টর-ন্যাশনাল অবকাঠামো ব্যবহার করে কার্যকরী, উন্নত ব্যবহারকারীর প্রোফাইলগুলিতে রূপান্তরিত করে। This guide walks you through building a modern recommendation engine Superlinked (কোডে সরাসরি হাঁটতে চান? GitHub এ খোলা সোর্স কোড চেক করুন এখানে. আপনার নিজের ব্যবহারের ক্ষেত্রে সুপারমেন্ডার সিস্টেমগুলি পরীক্ষা করার জন্য প্রস্তুত? এখানে একটি ডেমো পাবেন.) এখানে এখানে এখানে এখানে আপনি আমাদের সাথে ব্রাউজার ইন টিউটোরিয়াল অনুসরণ করতে পারেন কোলাব ড. ডঃ বেশিরভাগ ই-কমার্স পরামর্শদাতা অথবা অতিরিক্ত স্থিতিশীল ( নিয়ম ভিত্তিক) বা অস্বাভাবিক ব্ল্যাক বক্স (অপ্যাক ML মডেল)। RecSys ভেক্টর embedding চ্যালেঞ্জ সত্ত্বেও ব্যক্তিগতকরণ অর্জন যদিও ভেক্টর অন্তর্ভুক্তকরণ সুপারিশিং সিস্টেমগুলি ব্যাপকভাবে উন্নত করতে পারে, তাদের কার্যকরী বাস্তবায়ন কয়েকটি চ্যালেঞ্জ সমাধানের প্রয়োজন, যেমন: গুণমান এবং প্রাসঙ্গিকতা: অন্তর্ভুক্ত জেনারেশন প্রক্রিয়া, আর্কিটেকচার এবং ডেটা সাবধানে বিবেচনা করা উচিত। স্পারস এবং শব্দদূত তথ্য: ইনব্যাডিংগুলি অসম্পূর্ণ বা শব্দদূত ইনপুট থাকলে কম কার্যকর। পরিমাপযোগ্যতা: বড় ডেটা সেটের জন্য কার্যকর পদ্ধতি প্রয়োজন; অন্যথায়, দেরি একটি সমস্যা হবে। Superlinked আপনাকে ব্যবহারকারীদের এবং পণ্যগুলির সম্পর্কে সমস্ত উপলব্ধ তথ্য সমৃদ্ধ multimodal ভেক্টরগুলিতে একত্রিত করে এই চ্যালেঞ্জগুলি মোকাবেলা করতে দেয়। min_max সংখ্যা স্পেস: গ্রাহকদের পর্যালোচনা এবং মূল্য তথ্য বোঝার জন্য টেক্সট অনুরূপতা স্পেস: পণ্য তথ্যের সিমেন্টিক বোঝার জন্য ইভেন্ট পরিকল্পনা এবং ভেক্টর পরিবর্তন করার প্রভাব অনুসন্ধান সময় ভারসাম্য - আপনি কিভাবে ডেটা প্রক্রিয়াকরণ করতে চান তা নির্ধারণ করুন যখন আপনি অনুসন্ধানটি চালান, আপনি পুরো ডেটা সেট পুনরায় অন্তর্ভুক্ত না করে অপ্টিমাইজেশন এবং স্ক্যালিং করতে পারবেন (ল্যাটেন্সি) আমাদের প্রাথমিকভাবে বিরল ব্যবহারকারীর নির্দিষ্ট ডেটা (ব্যবহারকারীর প্রাথমিক পণ্য পছন্দ) অন্তর্ভুক্ত করে, আমরা ঠান্ডা শুরু সমস্যা মোকাবেলা করতে পারি। এই ইভেন্ট ডেটা অন্তর্ভুক্ত করে সুপারিশগুলি ব্যক্তিগতকরণ করে, একটি প্রতিক্রিয়া লুক তৈরি করে যা আপনাকে বাস্তব সময়ে ব্যবহারকারীর পছন্দগুলির সাথে ভেক্টরগুলি আপডেট করতে দেয়। হাইপার Let's get started! Superlinked দিয়ে একটি ই-কমার্স সুপারমেনশন ইঞ্জিন তৈরি করুন উন্নয়নের শুরুতে আমরা নিম্নলিখিত : product data পর্যালোচনাকারীদের সংখ্যা পণ্য রেট টেক্সটাল বর্ণনা পণ্যের নাম (সাধারণত ব্র্যান্ড নাম অন্তর্ভুক্ত) বিভাগ আমরাও নিম্নলিখিত : data about users and products প্রতিটি ব্যবহারকারী নিবন্ধন করার সময় তিনটি প্রস্তাবিত পণ্যগুলির মধ্যে একটি নির্বাচন করে (যেমন, পণ্য পছন্দ ডেটা) ব্যবহারকারীর আচরণ (নির্ধারণের পরে) অতিরিক্ত ইভেন্ট ডেটা সরবরাহ করে - পণ্যগুলির টেক্সট বৈশিষ্ট্যগুলির জন্য পছন্দগুলি (বিবরণ, নাম, শ্রেণী) এছাড়াও, ক্লাসিক অর্থনীতি আমাদের বলে যে, গড় সমস্ত ব্যবহারকারীরা ceteris paribus এমন পণ্যগুলি পছন্দ করে যা: খরচ কম অনেক পর্যালোচনা আছে উচ্চ রেট আমরা আমাদের স্পেসগুলি এই ডেটাগুলি বিবেচনা করার জন্য সেট করতে পারি, যাতে আমাদের রিসিএস ঠান্ডা শুরু পরিস্থিতিতে কাজ করে - ব্যবহারকারীদের জন্য আইটেমগুলি সুপারিশ করে যা আমরা খুব কম জানি. একবার আমাদের রিসিএস চালু হয়ে গেলে, আমাদের আচরণগত ডেটাও থাকবে: ব্যবহারকারীরা নির্দিষ্ট পণ্যগুলিতে ক্লিক করবে, নির্দিষ্ট পণ্যগুলি কিনবে, ইত্যাদি আমরা এই ইভেন্ট ডেটাগুলি ক্যাপচার করতে এবং ব্যবহার করতে পারি প্রতিক্রিয়া লুক তৈরি করতে, আমাদের ভেক্টরগুলি ব্যবহারকারীর পছন্দগুলি প্রদর্শন করতে এবং সুপারিশ গুণমান উন্নত করতে। সুপারলিংক তৈরি করুন প্রথমে, আমাদের Superlinked লাইব্রেরি ইনস্টল করতে হবে এবং ক্লাসগুলি আমদানি করতে হবে। %pip install superlinked==6.0.0 import altair as alt import os import pandas as pd import sys from superlinked.framework.common.embedding.number_embedding import Mode from superlinked.framework.common.schema.schema import schema from superlinked.framework.common.schema.event_schema import event_schema from superlinked.framework.common.schema.schema_object import String, Integer from superlinked.framework.common.schema.schema_reference import SchemaReference from superlinked.framework.common.schema.id_schema_object import IdField from superlinked.framework.common.parser.dataframe_parser import DataFrameParser from superlinked.framework.dsl.executor.in_memory.in_memory_executor import ( InMemoryExecutor, InMemoryApp, ) from superlinked.framework.dsl.index.index import Index from superlinked.framework.dsl.index.effect import Effect from superlinked.framework.dsl.query.param import Param from superlinked.framework.dsl.query.query import Query from superlinked.framework.dsl.source.in_memory_source import InMemorySource from superlinked.framework.dsl.space.text_similarity_space import TextSimilaritySpace from superlinked.framework.dsl.space.number_space import NumberSpace alt.renderers.enable(get_altair_renderer()) pd.set_option("display.max_colwidth", 190) আমরা আমাদের ডেটা সেটও সংজ্ঞায়িত করি, এবং শীর্ষ 10 আইটেমগুলি সংরক্ষণের জন্য একটি স্থায়ী তৈরি করি - দেখুন নোটবুকে কোষ 3 এখন যেহেতু লাইব্রেরি ইনস্টল করা হয়েছে, ক্লাস আমদানি করা হয়েছে এবং ডাটা সেট অবস্থানগুলি সনাক্ত করা হয়েছে, আমরা আমাদের স্পেসগুলি সেটআপ করার উপায় সম্পর্কে আমাদের ডাটা সেটআপটি দেখতে পারি। # the user preferences come from the user being prompted to select a product out of 3 - those will be the initial preferences # this is done in order to give somewhat personalised recommendations user_df: pd.DataFrame = pd.read_json(USER_DATASET_URL) user_df আমরা আমাদের পণ্যগুলির বিতরণ ডেটাকে ঘনিষ্ঠভাবে পরীক্ষা করতে পারি - দেখুন এটি আপনাকে কতগুলি পণ্য বিভিন্ন মূল্য পয়েন্টে রয়েছে, বিভিন্ন পর্যালোচনা সংখ্যা রয়েছে এবং বিভিন্ন রেট রয়েছে (যেখানে অধিকাংশ পণ্যগুলি এই পরিসরে অবস্থিত তা সহ) এর একটি চিত্র দেয়। সেল 5 পণ্যগুলির জন্য মূল্যবৃদ্ধি সাধারণত $ 1000 মূল্য পয়েন্টের নিচে থাকে. আমরা স্পেস পরিসীমা 25-1000 এ সেট করতে চাই, যাতে এটি প্রতিনিধিত্বপূর্ণ হয়, বাইরের মান দ্বারা বিপরীত হয় না। সেলিব্রিটি 7-9 ভেক্টর অনুসন্ধানের জন্য সূচক নির্মাণ সুপারলিংকডের লাইব্রেরীটিতে কোর বিল্ডিং ব্লকগুলির একটি সেট রয়েছে যা আমরা সূচক নির্মাণ এবং পুনরুদ্ধার পরিচালনা করতে ব্যবহার করি। এখানে আসুন এই লাইব্রেরির বিল্ডিং ব্লকগুলি আমাদের EComm RecSys ব্যবহার করতে রাখি। আপনার ডেটা সম্পর্কে সিস্টেমকে বলুন। define your Schema # schema is the way to describe the input data flowing into our system - in a typed manner @schema class ProductSchema: description: String name: String category: String price: Integer review_count: Integer review_rating: Integer id: IdField @schema class UserSchema: preference_description: String preference_name: String preference_category: String id: IdField @event_schema class EventSchema: product: SchemaReference[ProductSchema] user: SchemaReference[UserSchema] event_type: String id: IdField # we instantiate schemas as follows product = ProductSchema() user = UserSchema() event = EventSchema() পরবর্তীতে, আপনি স্পেস ব্যবহার করে বলুন যে আপনি ইনব্যাকশন করার সময় ডেটা প্রতিটি অংশকে কীভাবে আচরণ করতে চান. স্পেস সংজ্ঞাগুলিতে, আমরা বর্ণনা করি যে কীভাবে ইনপুটগুলি ইনব্যাক করা যায় যাতে তারা আমাদের ডেটাতে সিমেন্টিক সম্পর্কগুলি প্রতিফলিত করে। প্রতিটি স্পেস ডেটা ইনব্যাক্ট করার জন্য অপ্টিমাইজ করা হয় যাতে পুনরুদ্ধারের ফলাফলগুলির সর্বোচ্চ গুণমান ফিরে আসে। # textual inputs are embedded in a text similarity space powered by a sentence_transformers model description_space = TextSimilaritySpace( text=[user.preference_description, product.description], model="sentence-transformers/all-distilroberta-v1", ) name_space = TextSimilaritySpace( text=[user.preference_name, product.name], model="sentence-transformers/all-distilroberta-v1", ) category_space = TextSimilaritySpace( text=[user.preference_category, product.category], model="sentence-transformers/all-distilroberta-v1", ) # NumberSpaces encode numeric input in special ways to reflect a relationship # here we express relationships to price (lower the better), or ratings and review counts (more/higher the better) price_space = NumberSpace( number=product.price, mode=Mode.MINIMUM, min_value=25, max_value=1000 ) review_count_space = NumberSpace( number=product.review_count, mode=Mode.MAXIMUM, min_value=0, max_value=100 ) review_rating_space = NumberSpace( number=product.review_rating, mode=Mode.MAXIMUM, min_value=0, max_value=4 ) # create the index using the defined spaces product_index = Index( spaces=[ description_space, name_space, category_space, price_space, review_count_space, review_rating_space, ] ) # parse our data into the schemas - not matching column names can be conformed to schemas using the mapping parameter product_df_parser = DataFrameParser(schema=product) user_df_parser = DataFrameParser( schema=user, mapping={user.preference_description: "preference_desc"} ) # setup our application source_product: InMemorySource = InMemorySource(product, parser=product_df_parser) source_user: InMemorySource = InMemorySource(user, parser=user_df_parser) executor: InMemoryExecutor = InMemoryExecutor( sources=[source_product, source_user], indices=[product_index] ) app: InMemoryApp = executor.run() # load the actual data into our system source_product.put([products_df]) source_user.put([user_df]) এখন যেহেতু আপনি আপনার ডেটা স্পেসে সংজ্ঞায়িত করেছেন, আপনি আপনার ডেটা দিয়ে খেলতে এবং ফলাফলগুলি অপ্টিমাইজ করতে প্রস্তুত। আমাদের ঠান্ডা শুরু সমাধান। ঘটনা ছাড়াই আমরা কী করতে পারি RecSys ঠান্ডা শুরু সমস্যা মোকাবেলা এখানে, আমরা একটি ব্যবহারকারীর চাহিদা সংজ্ঞায়িত করি যা শুধুমাত্র ব্যবহারকারীর পছন্দ ভেক্টর দ্বারা অনুসন্ধান করে. আমরা প্রতিটি ইনপুট টাইপ (স্পেস) এর গুরুত্বের উপর কনফিগারেশন নিয়ন্ত্রণ আছে. user_query = ( Query( product_index, weights={ description_space: Param("description_weight"), name_space: Param("name_weight"), category_space: Param("category_weight"), price_space: Param("price_weight"), review_count_space: Param("review_count_weight"), review_rating_space: Param("review_rating_weight"), }, ) .find(product) .with_vector(user, Param("user_id")) .limit(Param("limit")) ) # simple recommendations for our user_1 # these are based only on the initial product the user chose when first entering our site simple_result = app.query( user_query, user_id="user_1", description_weight=1, name_weight=1, category_weight=1, price_weight=1, review_count_weight=1, review_rating_weight=1, limit=TOP_N, ) simple_result.to_pandas() এই অনুসন্ধানের ফলাফল এই সত্যকে প্রতিফলিত করে যে user_1 আমাদের ecomm সাইটে প্রথম নিবন্ধন করার সময় একটি হ্যান্ডব্যাগ বেছে নিয়েছিলেন। এটি ব্যবহারকারী_1 এর জন্য পণ্য সুপারিশ করা যেতে পারে যা আকর্ষণীয় - যেহেতু তাদের দাম কম, এবং অনেক ভাল পর্যালোচনা আছে উপর ভিত্তি করে. আমাদের ফলাফল এখন নিবন্ধনের সময় user_1 এর উভয় পণ্য নির্বাচন প্রতিফলিত হবে পণ্যগুলির সাধারণ জনপ্রিয়তা. (আমরা এই ওজনগুলির সাথেও এক বা অন্য স্পেসের দিকে ফলাফলগুলি ছড়িয়ে দিতে পারি। সাধারণত এবং general_result = app.query( user_query, user_id="user_1", description_weight=0, name_weight=0, category_weight=0, price_weight=1, review_count_weight=1, review_rating_weight=1, limit=TOP_N, ) general_result.to_pandas() একটি নতুন ব্যবহারকারীর অনুসন্ধান আমাদের সুপারিশ ফলাফলের জন্য একটি ইনপুট হিসাবে অনুরোধ টেক্সট প্রবেশ করে - দেখুন কোষ ২০ আমাদের উদাহরণের ক্ষেত্রে, user_1 অনুসন্ধান করেছিলেন "গার্মেন্টস জ্যাকেট". আমরা আমাদের ফলাফলগুলি প্রদান করে অপ্টিমাইজ করতে পারি ( ) আরো "নারী পোশাক জ্যাকেট" পণ্য সুপারিশ। additional weight to the category space category_weight = 10 women_cat_result = app.query( search_query, user_id="user_1", query_text="women clothing jackets", description_weight=1, name_weight=1, category_weight=10, price_weight=1, review_count_weight=1, review_rating_weight=1, limit=TOP_N, ) women_cat_result.to_pandas() আমাদের অতিরিক্ত বিভাগ ওজন আরো মহিলা পোশাক ফলাফল উত্পাদন করে। আমরা আমাদের পরামর্শগুলি শীর্ষ শ্রেণীর পণ্যগুলিতেও বিচ্ছিন্ন করতে পারি ( ফলাফল এখন ব্যবহারকারী_1 এর প্রাথমিক পছন্দ ব্যাগ এবং আইটেম যা সাধারণত জনপ্রিয়, যখন নিম্ন রেট পণ্য সম্পূর্ণরূপে মুছে ফেলা হয়। review_rating_weight=5 ক্যাম্প 22 ব্যক্তিগত অভিজ্ঞতা তৈরি করার জন্য ইভেন্ট ডেটা ব্যবহার আমাদের ব্যবহারকারীরা আমাদের প্ল্যাটফর্মের সাথে ইন্টারেক্ট করেছে - user_1 আরো, user_2 কম তাই. আমরা এখন আমাদের ব্যবহারকারীদের ব্যবহার করতে পারেন (নিম্নলিখিত দেখুন), ইভেন্ট হিসাবে প্রতিনিধিত্ব করা হয়: behavioral data একটি ব্যবহারকারী কাস্টম এবং বিনোদন পণ্য আগ্রহী (user_2) বাইরে যাওয়ার জন্য এবং আনুষ্ঠানিক কাজের সময় সুন্দর পণ্যগুলিতে আগ্রহী একজন ব্যবহারকারী (user_1) events_df = ( pd.read_json(EVENT_DATASET_URL) .reset_index() .rename(columns={"index": "id"}) .head(NROWS) ) events_df = events_df.merge( products_df[["id"]], left_on="product", right_on="id", suffixes=("", "r") ).drop("idr", axis=1) events_df = events_df.assign(created_at=1715439600) events_df একটি নির্দিষ্ট পণ্য ব্যবহারকারীর আগ্রহের মাত্রা নিবন্ধন করার জন্য নির্দিষ্ট পদক্ষেপগুলি ওজন করুন, এবং ডাউনলোড করার সময় ইভেন্টগুলি বিবেচনা করার জন্য সেটিংটি সংশোধন করুন। event_weights = { "clicked_on": 0.2, "buy": 1, "put_to_cart": 0.5, "removed_from_cart": -0.5, } # adjust the setup to events product_index_with_events = Index( spaces=[ description_space, category_space, name_space, price_space, review_count_space, review_rating_space, ], effects=[ Effect( description_space, event.user, event_weight * event.product, event.event_type == event_type, ) for event_type, event_weight in event_weights.items() ] + [ Effect( category_space, event.user, event_weight * event.product, event.event_type == event_type, ) for event_type, event_weight in event_weights.items() ] + [ Effect( name_space, event.user, event_weight * event.product, event.event_type == event_type, ) for event_type, event_weight in event_weights.items() ], ) event_df_parser: DataFrameParser = DataFrameParser(schema=event) source_event: InMemorySource = InMemorySource(schema=event, parser=event_df_parser) executor_with_events: InMemoryExecutor = InMemoryExecutor( sources=[source_product, source_user, source_event], indices=[product_index_with_events], ) app_with_events: InMemoryApp = executor_with_events.run() এখন আমরা ব্যবহারকারীর ইভেন্টগুলি বিবেচনা করার জন্য একটি নতুন সূচক তৈরি করি এবং তারপর প্রতিটি ব্যবহারকারীর জন্য পরামর্শগুলি ব্যক্তিগত করি। # for a new index, all data has to be put into the source again source_product.put([products_df]) source_user.put([user_df]) source_event.put([events_df]) # a query only searching with the user's vector the preferences are now much more personalised thanks to the events personalised_query = ( Query( product_index_with_events, weights={ description_space: Param("description_weight"), category_space: Param("category_weight"), name_space: Param("name_weight"), price_space: Param("price_weight"), review_count_space: Param("review_count_weight"), review_rating_space: Param("review_rating_weight"), }, ) .find(product) .with_vector(user, Param("user_id")) .limit(Param("limit")) ) আমরা কাস্টমাইজেশন ওজন দ্বারা আমাদের RecSys ইভেন্ট অন্তর্ভুক্ত করার প্রভাব পর্যবেক্ষণ করতে পারেন অথবা প্রথমে, চলুন দেখে নেওয়া যাক এই (ভিত্তিক ডেটা) ইভেন্টগুলির দ্বারা প্রভাবিত স্পেসগুলি ওজন করার প্রভাব (ভিত্তিকের সাথে তুলনা করা)। একটু সামান্য ভারী # with small weight on event-affected spaces, we mainly just alter the results below position 4 general_event_result = app_with_events.query( personalised_query, user_id="user_1", description_weight=1, category_weight=1, name_weight=1, price_weight=1, review_count_weight=1, review_rating_weight=1, limit=TOP_N, ) general_event_result.to_pandas().join( simple_result.to_pandas(), lsuffix="", rsuffix="_base" )[["description", "id", "description_base", "id_base"]] ইভেন্ট দ্বারা প্রভাবিত স্পেসগুলিতে খুব কম ওজন দেওয়া হলে, আমরা পূর্ববর্তী ফলাফলের তুলনায় আমাদের শীর্ষ 10 এর দ্বিতীয় অর্ধেকের তুলনায় ("id_base", ডানদিকে) একটি পরিবর্তন পর্যবেক্ষণ করি। কিন্তু যদি আমরা ইভেন্ট দ্বারা প্রভাবিত স্পেসগুলি আরো ভারী করে তুলি, তাহলে আমরা আমাদের পরামর্শ তালিকায় সম্পূর্ণরূপে নতুন আইটেমগুলি উপস্থাপন করি। # with larger weight on the the event-affected spaces, more totally new items appear in the TOP10 event_weighted_result = app_with_events.query( personalised_query, user_id="user_1", query_text="", description_weight=5, category_weight=1, name_weight=1, price_weight=1, review_count_weight=1, review_rating_weight=1, limit=TOP_N, ) event_weighted_result.to_pandas().join( simple_result.to_pandas(), lsuffix="", rsuffix="_base" )[["description", "id", "description_base", "id_base"]] আমরা অবশ্যই একটি নির্দিষ্ট ব্যবহারকারীর আচরণের উপর ভিত্তি করে আমাদের সুপারিশগুলি ব্যক্তিগত করতে ওজনগুলি ব্যবহার করতে পারি (অভেন্ট ডেটা) এবং উদাহরণস্বরূপ, মূল্য ( দেখুন ) একই সময়ে অন্যান্য পণ্য বৈশিষ্ট্য অগ্রাধিকার মোট ৩১ উপসংহার সুপারলিংকড লাইব্রেরির eComm RecSys বাস্তবায়ন (উপরে) আপনাকে দেখায় যেভাবে ব্যবহারকারীর অনুরোধ এবং আচরণগত ডেটাগুলির সিমেন্টিক মান অন্তর্ভুক্ত করে ভেক্টর ইনব্যাডিংয়ের ক্ষমতা বাস্তবায়ন করা যায়. আমাদের min_max সংখ্যা এবং টেক্সট অনুরূপতা স্পেস, ইভেন্ট স্কিম এবং প্রভাব, এবং অনুরোধের সময় ওজনগুলি ব্যবহার করে, আপনি RecSys এর ঠান্ডা শুরু, গুণমান এবং প্রাসঙ্গিকতা এবং স্ক্যালারিযোগ্যতা চ্যালেঞ্জগুলি সমাধান করতে পারেন এবং উত্পাদনে উচ্চ নির্ভরযোগ্য, ব্যবহারকারীর ব্যক্তিগত পরামর্শগুলি প্রদান করতে পারেন। এখন আপনার দিকে! আমাদের নোটবুক ব্যবহার করে নিজেই সুপারলিংকড লাইব্রেরি বাস্তবায়ন করুন Try It Yourself – Get the Code & Demo! এটি নিজেই চেষ্টা করুন - কোড এবং ডেমো পেতে! কোডটি ধরা যাক: আমাদের GitHub রিপোতে সম্পূর্ণ বাস্তবায়নটি দেখুন এখানে. এটি ফর্ক করুন, এটি সংশোধন করুন এবং এটি আপনার নিজের তৈরি করুন! এটি কাজে দেখুন: এটি বাস্তব বিশ্বের সেটআপে কাজ দেখতে চান? একটি দ্রুত ডেমো বুক করুন, এবং Superlinked কিভাবে আপনার পরামর্শগুলি অতিরিক্ত চার্জ করতে পারে তা অনুসন্ধান করুন। এখানে এখানে সুপারিশ ইঞ্জিনগুলি আমাদের সামগ্রী আবিষ্কার করার উপায় আবিষ্কার করছে. এটি জনপ্রিয় প্যান্ট, সঙ্গীত, বা অন্যান্য পণ্য, — এবং এখন আপনি আপনার নিজের তৈরি করার জন্য সরঞ্জাম আছে। vector search is the future