AI Architecture & Core Data

AI Architecture: Implementing High-Performance Vector Search with Pinecone

লার্জ ল্যাঙ্গুয়েজ মডেল (LLM) যেমন GPT বা কাস্টম Llama মডেলগুলোর নিজস্ব মেমোরি লিমিটেড থাকে। দীর্ঘ কোনো কন্টেন্ট বা ডাটাবেজের ওপর ভিত্তি করে এআই-কে কাজ করাতে হলে আমাদের **RAG (Retrieval-Augmented Generation)** টেকনিক ব্যবহার করতে হয়। আর RAG এর মূল ভিত্তি হলো **Vector Database**।

ভেক্টর ডাটাবেজ সাধারণ টেক্সটের বদলে ডেটার গাণিতিক রূপ বা ভেক্টর এমবেডিংস (Vector Embeddings) স্টোর করে। এর ফলে অর্থের ওপর ভিত্তি করে সিম্যান্টিক সার্চ (Semantic Search) করা সম্ভব হয়। এই কাজের জন্য ক্লাউড-নেটিভ এবং সবচেয়ে জনপ্রিয় ইঞ্জিন হলো **Pinecone**।

১. ক্লায়েন্ট এসডিকে ইনস্টলেশন

আপনার জাভাস্ক্রিপ্ট/নোড ব্যাকএন্ড এনভায়রনমেন্টে পাইনকোন অফিশিয়াল এসডিকে সেটআপ করতে নিচের কমান্ডটি রান করুন:

npm install @pinecone-database/pinecone

ধাপ ২: ইনডেক্স ইনিশিয়েলাইজেশন এবং ডেটা কোয়েরি স্ক্রিপ্ট

পাইনকোন ডাটাবেজে কানেক্ট করা, ভেক্টর ইনসার্ট (Upsert) করা এবং কুয়েরি করার প্রোডাকশন গ্রেড আর্কিটেকচার কোড নিচে দেওয়া হলো:

const { Pinecone } = require('@pinecone-database/pinecone');

// পাইনকোন ক্লায়েন্ট কনফিগারেশন
const pc = new Pinecone({
    apiKey: 'YOUR_PINECONE_API_KEY' // ক্লাউড ড্যাশবোর্ড থেকে প্রাপ্ত সিক্রেট এপিআই কি
});

async function handleVectorPipeline() {
    // টার্গেট ইনডেক্স সিলেক্ট করা (যেমন: ১৫৩৬ ডাইমেনশনের OpenAI embeddings এর জন্য)
    const index = pc.index('ahyan-ai-index');

    console.log('Pipeline synchronized. Injecting vector data...');

    // ডাটাবেজে কাস্টম এমবেডিংস আপসার্ট (Insert/Update) করা
    await index.upsert([
        {
            id: 'doc_id_101',
            values: [0.015, -0.023, 0.456, /* ... মোট ডাইমেনশন কাউন্ট ... */ 0.102],
            metadata: { category: 'education', author: 'Ahyan Creations' }
        }
    ]);

    // সিমিলারিটি বা ভেক্টর ম্যাচিং কুয়েরি করা
    const queryResponse = await index.query({
        vector: [0.012, -0.020, 0.400, /* ... কুয়েরি ভেক্টর ... */ 0.095],
        topK: 3, // সবচেয়ে কাছাকাছি মিল থাকা ৩টি রেজাল্ট রিটার্ন করবে
        includeMetadata: true
    });

    console.log('Semantic Match Results:', JSON.stringify(queryResponse, null, 2));
}

handleVectorPipeline().catch(console.error);

ভেক্টর ডেটা সাইজিং নোট: ইনডেক্স তৈরি করার সময় ডাইমেনশন কাউন্ট (Dimension count) এবং ডিস্ট্যান্স মেট্রিক (যেমন: Cosine, Dot Product বা Euclidean) অত্যন্ত সাবধানে সিলেক্ট করতে হবে। ভুল ডাইমেনশন কনফিগার করলে ডেটা ইনসার্ট রিজেক্ট হবে।