ভার্টেক্স এআই প্লাগইন

Vertex AI প্লাগইন বেশ কিছু AI পরিষেবাতে ইন্টারফেস প্রদান করে:

ইনস্টলেশন

npm i --save @genkit-ai/vertexai

আপনি যদি স্থানীয়ভাবে এই প্লাগইনটি ব্যবহার করে এমন ফ্লো চালাতে চান, তাহলে আপনাকে Google Cloud CLI টুল ইনস্টল করতে হবে।

কনফিগারেশন

এই প্লাগইনটি ব্যবহার করতে, আপনি যখন Genkit শুরু করবেন তখন এটি নির্দিষ্ট করুন:

import { genkit } from 'genkit';
import { vertexAI } from '@genkit-ai/vertexai';

const ai = genkit({
  plugins: [
    vertexAI({ location: 'us-central1' }),
  ],
});

প্লাগইনটির জন্য আপনাকে আপনার Google ক্লাউড প্রকল্পের আইডি, যে অঞ্চলে আপনি Vertex API অনুরোধ করতে চান এবং আপনার Google ক্লাউড প্রকল্পের শংসাপত্রগুলি নির্দিষ্ট করতে হবে৷

  • আপনি vertexAI() কনফিগারেশনে projectId সেট করে অথবা GCLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল সেট করে আপনার Google ক্লাউড প্রজেক্ট আইডি নির্দিষ্ট করতে পারেন। আপনি যদি Google ক্লাউড পরিবেশ (ক্লাউড ফাংশন, ক্লাউড রান ইত্যাদি) থেকে আপনার প্রবাহ চালাচ্ছেন, তাহলে GCLOUD_PROJECT স্বয়ংক্রিয়ভাবে পরিবেশের প্রকল্প আইডিতে সেট হয়ে যাবে।
  • আপনি vertexAI() কনফিগারেশনে location সেট করে বা GCLOUD_LOCATION পরিবেশ পরিবর্তনশীল সেট করে API অবস্থান নির্দিষ্ট করতে পারেন।
  • API শংসাপত্রগুলি প্রদান করতে, আপনাকে Google ক্লাউড অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি সেট আপ করতে হবে৷

    1. আপনার শংসাপত্রগুলি নির্দিষ্ট করতে:

      • আপনি যদি Google ক্লাউড পরিবেশ (ক্লাউড ফাংশন, ক্লাউড রান ইত্যাদি) থেকে আপনার প্রবাহ চালাচ্ছেন তবে এটি স্বয়ংক্রিয়ভাবে সেট হয়ে যায়।
      • আপনার স্থানীয় ডেভ পরিবেশে, চালিয়ে এটি করুন:

        gcloud auth application-default login
      • অন্যান্য পরিবেশের জন্য, অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ডক্স দেখুন।

    2. উপরন্তু, নিশ্চিত করুন যে অ্যাকাউন্টটি Vertex AI ব্যবহারকারী IAM ভূমিকা ( roles/aiplatform.user ) মঞ্জুর করেছে। Vertex AI অ্যাক্সেস কন্ট্রোল ডক্স দেখুন।

ব্যবহার

জেনারেটিভ এআই মডেল

এই প্লাগইনটি স্ট্যাটিকভাবে এর সমর্থিত জেনারেটিভ এআই মডেলের রেফারেন্স রপ্তানি করে:

import { gemini15Flash, gemini15Pro, imagen3 } from '@genkit-ai/vertexai';

কোন মডেল ai.generate() ব্যবহার করে তা নির্দিষ্ট করতে আপনি এই রেফারেন্সগুলি ব্যবহার করতে পারেন:

const ai = genkit({
  plugins: [vertexAI({ location: 'us-central1' })],
});

const llmResponse = await ai.generate({
  model: gemini15Flash,
  prompt: 'What should I do when I visit Melbourne?',
});

এই প্লাগইনটি Google অনুসন্ধান বা আপনার নিজস্ব ডেটা ব্যবহার করে গ্রাউন্ডিং মিথুন পাঠ্য প্রতিক্রিয়া সমর্থন করে৷

উদাহরণ:

const ai = genkit({
  plugins: [vertexAI({ location: 'us-central1' })],
});

await ai.generate({
  model: gemini15Flash,
  prompt: '...',
  config: {
    googleSearchRetrieval: {
      disableAttribution: true,
    }
    vertexRetrieval: {
      datastore: {
        projectId: 'your-cloud-project',
        location: 'us-central1',
        collection: 'your-collection',
      },
      disableAttribution: true,
    }
  }
})

এই প্লাগইনটি স্থিরভাবে গেকো টেক্সট এমবেডিং মডেলের একটি রেফারেন্সও রপ্তানি করে:

import { textEmbedding004 } from '@genkit-ai/vertexai';

একটি সূচক বা পুনরুদ্ধারকারী কোন এমবেডার ব্যবহার করে তা নির্দিষ্ট করতে আপনি এই রেফারেন্সটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি যদি Chroma DB ব্যবহার করেন:

const ai = genkit({
  plugins: [
    chroma([
      {
        embedder: textEmbedding004,
        collectionName: 'my-collection',
      },
    ]),
  ],
});

অথবা আপনি সরাসরি একটি এম্বেডিং তৈরি করতে পারেন:

const ai = genkit({
  plugins: [vertexAI({ location: 'us-central1' })],
});

const embedding = await ai.embed({
  embedder: textEmbedding004,
  content: 'How many widgets do you have in stock?',
});

Imagen3 মডেল ব্যবহারকারীর প্রম্পট থেকে ছবি তৈরি করার অনুমতি দেয়:

import { imagen3 } from '@genkit-ai/vertexai';

const ai = genkit({
  plugins: [vertexAI({ location: 'us-central1' })],
});

const response = await ai.generate({
  model: imagen3,
  output: { format: 'media' },
  prompt: 'a banana riding a bicycle',
});

return response.media();

এবং এমনকি বিদ্যমান চিত্রগুলির উন্নত সম্পাদনা:

const ai = genkit({
  plugins: [vertexAI({ location: 'us-central1' })],
});

const baseImg = fs.readFileSync('base.png', { encoding: 'base64' });
const maskImg = fs.readFileSync('mask.png', { encoding: 'base64' });

const response = await ai.generate({
  model: imagen3,
  output: { format: 'media' },
  prompt: [
    { media: { url: `data:image/png;base64,${baseImg}` }},
    {
      media: { url: `data:image/png;base64,${maskImg}` },
      metadata: { type: 'mask' },
    },
    { text: 'replace the background with foo bar baz' },
  ],
  config: {
    editConfig: {
      editMode: 'outpainting',
    },
  },
});

return response.media();

আরও বিস্তারিত বিকল্পের জন্য ইমেজেন মডেল ডকুমেন্টেশন পড়ুন।

ভার্টেক্স এআই মডেল গার্ডেনে নৃতাত্ত্বিক ক্লড 3

আপনার যদি Vertex AI মডেল গার্ডেনে Claude 3 মডেল ( হাইকু , সনেট বা ওপাস ) অ্যাক্সেস থাকে তবে আপনি সেগুলি Genkit এর সাথে ব্যবহার করতে পারেন।

ভার্টেক্স এআই মডেল গার্ডেন মডেলগুলি সক্ষম করার জন্য এখানে নমুনা কনফিগারেশন রয়েছে:

import { genkit } from 'genkit';
import {
  claude3Haiku,
  claude3Sonnet,
  claude3Opus,
  vertexAIModelGarden,
} from '@genkit-ai/vertexai/modelgarden';

const ai = genkit({
  plugins: [
    vertexAIModelGarden({
      location: 'us-central1',
      models: [claude3Haiku, claude3Sonnet, claude3Opus],
    }),
  ],
});

তারপরে তাদের নিয়মিত মডেল হিসাবে ব্যবহার করুন:

const llmResponse = await ai.generate({
  model: claude3Sonnet,
  prompt: 'What should I do when I visit Melbourne?',
});

ভার্টেক্স এআই মডেল গার্ডেনে লামা 3.1 405b

প্রথমে আপনাকে Vertex AI মডেল গার্ডেনে Llama 3.1 API পরিষেবা সক্ষম করতে হবে।

Vertex AI প্লাগইনে Llama 3.1 405b-এর নমুনা কনফিগারেশন এখানে দেওয়া হল:

import { genkit } from 'genkit';
import { llama31, vertexAIModelGarden } from '@genkit-ai/vertexai/modelgarden';

const ai = genkit({
  plugins: [
    vertexAIModelGarden({
      location: 'us-central1',
      models: [llama31],
    }),
  ],
});

তারপর এটি নিয়মিত মডেল হিসাবে ব্যবহার করুন:

const llmResponse = await ai.generate({
  model: llama31,
  prompt: 'Write a function that adds two numbers together',
});

মূল্যায়নকারী

Vertex AI দ্রুত মূল্যায়ন থেকে মূল্যায়নকারীদের ব্যবহার করতে, আপনার vertexAI প্লাগইন কনফিগারেশনে একটি evaluation ব্লক যোগ করুন।

import { genkit } from 'genkit';
import {
  vertexAIEvaluation,
  VertexAIEvaluationMetricType,
} from '@genkit-ai/vertexai/evaluation';

const ai = genkit({
  plugins: [
    vertexAIEvaluation({
      location: 'us-central1',
      metrics: [
        VertexAIEvaluationMetricType.SAFETY,
        {
          type: VertexAIEvaluationMetricType.ROUGE,
          metricSpec: {
            rougeType: 'rougeLsum',
          },
        },
      ],
    }),
  ],
});

উপরের কনফিগারেশন Safety এবং ROUGE মেট্রিক্সের জন্য মূল্যায়নকারীদের যোগ করে। উদাহরণটি দুটি পন্থা দেখায়- Safety মেট্রিক ডিফল্ট স্পেসিফিকেশন ব্যবহার করে, যেখানে ROUGE মেট্রিক একটি কাস্টমাইজড স্পেসিফিকেশন প্রদান করে যা রুজ টাইপকে rougeLsum এ সেট করে।

উভয় মূল্যায়নকারীকে একটি সামঞ্জস্যপূর্ণ ডেটাসেটের সাথে genkit eval:run কমান্ড ব্যবহার করে চালানো যেতে পারে: অর্থাৎ, output এবং reference ক্ষেত্র সহ একটি ডেটাসেট। Safety মূল্যায়নকারীকে genkit eval:flow -e vertexai/safety কমান্ড ব্যবহার করেও চালানো যেতে পারে কারণ এটির জন্য শুধুমাত্র একটি output প্রয়োজন।

সূচক এবং উদ্ধারকারী

Genkit Vertex AI প্লাগইনে ভারটেক্স এআই ভেক্টর অনুসন্ধান পরিষেবা দ্বারা সমর্থিত সূচক এবং পুনরুদ্ধার বাস্তবায়ন অন্তর্ভুক্ত রয়েছে।

(আরএজি বাস্তবায়নে কীভাবে সূচক এবং পুনরুদ্ধারকারী ব্যবহার করা হয় তা জানতে পুনরুদ্ধার-বর্ধিত প্রজন্মের পৃষ্ঠা দেখুন।)

Vertex AI ভেক্টর অনুসন্ধান পরিষেবা হল একটি নথি সূচক যা আপনার পছন্দের নথির দোকানের পাশাপাশি কাজ করে: নথির দোকানে নথির বিষয়বস্তু থাকে এবং Vertex AI ভেক্টর অনুসন্ধান সূচকে প্রতিটি নথির জন্য, এর ভেক্টর এম্বেডিং এবং একটি রেফারেন্স থাকে নথির দোকানে নথি। আপনার নথিগুলি Vertex AI ভেক্টর অনুসন্ধান পরিষেবা দ্বারা সূচিবদ্ধ হওয়ার পরে, এটি অনুসন্ধানের প্রশ্নের উত্তর দিতে পারে, আপনার নথির দোকানে সূচীগুলির তালিকা তৈরি করে৷

Vertex AI প্লাগইন দ্বারা প্রদত্ত সূচক এবং পুনরুদ্ধার বাস্তবায়ন নথির দোকান হিসাবে Cloud Firestore বা BigQuery ব্যবহার করে। প্লাগইনটিতে এমন ইন্টারফেসগুলিও রয়েছে যা আপনি অন্যান্য নথির দোকানগুলিকে সমর্থন করার জন্য প্রয়োগ করতে পারেন৷

Vertex AI ভেক্টর অনুসন্ধান ব্যবহার করতে:

  1. একটি এমবেডিং মডেল চয়ন করুন। এই মডেলটি পাঠ্য থেকে ভেক্টর এম্বেডিং তৈরি করার জন্য দায়ী। উন্নত ব্যবহারকারীরা তাদের নির্দিষ্ট ডেটা সেটের জন্য অপ্টিমাইজ করা একটি এমবেডিং মডেল ব্যবহার করতে পারে, কিন্তু বেশিরভাগ ব্যবহারকারীর জন্য, Vertex AI এর text-embedding-004 মডেলটি ইংরেজি টেক্সটের জন্য একটি ভাল পছন্দ এবং text-multilingual-embedding-002 মডেলটি বহুভাষিক টেক্সটের জন্য ভাল।
  2. Google ক্লাউড কনসোলের ভেক্টর অনুসন্ধান বিভাগে, একটি নতুন সূচক তৈরি করুন। সবচেয়ে গুরুত্বপূর্ণ সেটিংস হল:

    • মাত্রা: আপনার নির্বাচিত এমবেডিং মডেল দ্বারা উত্পাদিত ভেক্টরের মাত্রিকতা নির্দিষ্ট করুন। text-embedding-004 এবং text-multilingual-embedding-002 মডেল 768 মাত্রার ভেক্টর তৈরি করে।
    • আপডেট পদ্ধতি: স্ট্রিমিং আপডেট নির্বাচন করুন।

    আপনি সূচী তৈরি করার পরে, এটি একটি আদর্শ (সর্বজনীন) এন্ডপয়েন্টে স্থাপন করুন।

  3. আপনি যে ডকুমেন্ট স্টোরটি ব্যবহার করতে চান তার জন্য একটি ডকুমেন্ট ইনডেক্সার এবং পুনরুদ্ধার পান:

    ক্লাউড ফায়ারস্টোর

    import { getFirestoreDocumentIndexer, getFirestoreDocumentRetriever } from '@genkit-ai/vertexai/vectorsearch';
    
    import { initializeApp } from 'firebase-admin/app';
    import { getFirestore } from 'firebase-admin/firestore';
    
    initializeApp({ projectId: PROJECT_ID });
    const db = getFirestore();
    
    const firestoreDocumentRetriever = getFirestoreDocumentRetriever(db, FIRESTORE_COLLECTION);
    const firestoreDocumentIndexer = getFirestoreDocumentIndexer(db, FIRESTORE_COLLECTION);
    

    BigQuery

    import { getBigQueryDocumentIndexer, getBigQueryDocumentRetriever } from '@genkit-ai/vertexai/vectorsearch';
    import { BigQuery } from '@google-cloud/bigquery';
    
    const bq = new BigQuery({ projectId: PROJECT_ID });
    
    const bigQueryDocumentRetriever = getBigQueryDocumentRetriever(bq, BIGQUERY_TABLE, BIGQUERY_DATASET);
    const bigQueryDocumentIndexer = getBigQueryDocumentIndexer(bq, BIGQUERY_TABLE, BIGQUERY_DATASET);
    

    অন্যান্য

    অন্যান্য নথির দোকানগুলিকে সমর্থন করার জন্য আপনি DocumentRetriever এবং DocumentIndexer এর নিজস্ব বাস্তবায়ন প্রদান করতে পারেন:

    const myDocumentRetriever = async (neighbors) => {
      // Return the documents referenced by `neighbors`.
      // ...
    }
    const myDocumentIndexer = async (documents) => {
      // Add `documents` to storage.
      // ...
    }
    

    উদাহরণের জন্য, নমুনা ভার্টেক্স এআই প্লাগইন পুনরুদ্ধারকারী এবং স্থানীয় ফাইল সহ সূচক দেখুন।

  4. আপনার vertexAI প্লাগইন কনফিগারেশনে একটি vectorSearchOptions ব্লক যোগ করুন:

    import { genkit } from 'genkit';
    import { textEmbedding004 } from '@genkit-ai/vertexai';
    import { vertexAIVectorSearch } from '@genkit-ai/vertexai/vectorsearch';
    
    const ai = genkit({
      plugins: [
        vertexAIVectorSearch({
          projectId: PROJECT_ID,
          location: LOCATION,
          vectorSearchOptions: [
            {
              indexId: VECTOR_SEARCH_INDEX_ID,
              indexEndpointId: VECTOR_SEARCH_INDEX_ENDPOINT_ID,
              deployedIndexId: VECTOR_SEARCH_DEPLOYED_INDEX_ID,
              publicDomainName: VECTOR_SEARCH_PUBLIC_DOMAIN_NAME,
              documentRetriever: firestoreDocumentRetriever,
              documentIndexer: firestoreDocumentIndexer,
              embedder: textEmbedding004,
            },
          ],
        }),
      ],
    });
    

    প্রথম ধাপে আপনার বেছে নেওয়া এমবেডার এবং আগের ধাপে আপনার তৈরি করা ডকুমেন্ট ইনডেক্সার এবং রিট্রিভার প্রদান করুন।

    আপনার আগে তৈরি করা ভেক্টর অনুসন্ধান সূচকটি ব্যবহার করার জন্য প্লাগইনটি কনফিগার করতে, আপনাকে বেশ কয়েকটি মান প্রদান করতে হবে, যা আপনি Google ক্লাউড কনসোলের ভেক্টর অনুসন্ধান বিভাগে খুঁজে পেতে পারেন:

    • indexId : ইনডেক্স ট্যাবে তালিকাভুক্ত
    • indexEndpointId : ইনডেক্স এন্ডপয়েন্ট ট্যাবে তালিকাভুক্ত
    • deployedIndexId এবং publicDomainName : "ডিপ্লোয়েড ইনডেক্স ইনফো" পৃষ্ঠায় তালিকাভুক্ত, যেটি আপনি আগে উল্লিখিত ট্যাবগুলির যেকোনো একটিতে স্থাপন করা সূচির নামে ক্লিক করে খুলতে পারেন
  5. এখন সবকিছু কনফিগার করা হয়েছে, আপনি আপনার Genkit অ্যাপ্লিকেশনে সূচক এবং পুনরুদ্ধার ব্যবহার করতে পারেন:

    import {
      vertexAiIndexerRef,
      vertexAiRetrieverRef,
    } from '@genkit-ai/vertexai/vectorsearch';
    
    // ... inside your flow function:
    
    await ai.index({
      indexer: vertexAiIndexerRef({
        indexId: VECTOR_SEARCH_INDEX_ID,
      }),
      documents,
    });
    
    const res = await ai.retrieve({
      retriever: vertexAiRetrieverRef({
        indexId: VECTOR_SEARCH_INDEX_ID,
      }),
      query: queryDocument,
    });
    

এর জন্য কোড নমুনা দেখুন: