Vertex AI प्लगिन

Vertex AI प्लगिन, कई एआई सेवाओं के लिए इंटरफ़ेस उपलब्ध कराता है:

इंस्टॉल करना

npm i --save @genkit-ai/vertexai

अगर आपको इस प्लगिन का इस्तेमाल करने वाले फ़्लो को लोकल तौर पर चलाना है, तो आपको Google Cloud CLI टूल इंस्टॉल किया गया.

कॉन्फ़िगरेशन

इस प्लग इन का उपयोग करने के लिए, configureGenkit() को कॉल करते समय इसका उल्लेख करें:

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

export default configureGenkit({
  plugins: [
    vertexAI({ projectId: 'your-cloud-project', location: 'us-central1' }),
  ],
  // ...
});

प्लग इन के लिए, आपको अपना Google Cloud प्रोजेक्ट आईडी, वह इलाका बताना होगा जहां आपको Vertex API के अनुरोध करने हैं. साथ ही, आपको अपने Google Cloud प्रोजेक्ट के क्रेडेंशियल भी देने होंगे.

  • vertexAI() कॉन्फ़िगरेशन में projectId सेट करके या GCLOUD_PROJECT एनवायरमेंट वैरिएबल सेट करके, अपने Google Cloud प्रोजेक्ट आईडी की जानकारी दी जा सकती है. अगर Google Cloud के एनवायरमेंट (Cloud इस्तेमाल करने का तरीका) से फ़्लो चलाया जा रहा है फ़ंक्शन, Cloud Run वगैरह), GCLOUD_PROJECT अपने-आप एनवायरमेंट का प्रोजेक्ट आईडी.

  • एपीआई की जगह की जानकारी देने के लिए, यहां दिए गए विकल्पों में से location को vertexAI() कॉन्फ़िगरेशन या GCLOUD_LOCATION एनवायरमेंट को सेट करके वैरिएबल.

  • एपीआई क्रेडेंशियल देने के लिए, आपको Google Cloud ऐप्लिकेशन सेट अप करना होगा डिफ़ॉल्ट क्रेडेंशियल.

    1. अपने क्रेडेंशियल डालने के लिए:

      • अगर Google Cloud के एनवायरमेंट (Cloud इस्तेमाल करने का तरीका) से फ़्लो चलाया जा रहा है फ़ंक्शन, Cloud Run वगैरह), तो यह अपने-आप सेट हो जाता है.

      • अपने स्थानीय डेवलपर एनवायरमेंट में, यह करने के लिए:

      gcloud auth application-default login
    2. इसके अलावा, पक्का करें कि खाते को Vertex AI उपयोगकर्ता आईएएम भूमिका (roles/aiplatform.user) दी गई हो. Vertex AI के ऐक्सेस कंट्रोल दस्तावेज़ देखें.

इस्तेमाल किए जाने से जुड़ी जानकारी

जनरेटिव एआई मॉडल

यह प्लग इन, काम करने वाले जनरेटिव एआई मॉडल के रेफ़रंस को स्टैटिक तौर पर एक्सपोर्ट करता है:

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

इन रेफ़रंस का इस्तेमाल करके, यह बताया जा सकता है कि generate() किस मॉडल का इस्तेमाल करता है:

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

यह प्लग इन, Google Search या आपके डेटा का इस्तेमाल करके, Gemini के टेक्स्ट जवाबों को बेहतर बनाने में भी मदद करता है.

उदाहरण:

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

यह प्लग इन, Gecko टेक्स्ट एम्बेडिंग मॉडल का रेफ़रंस भी स्टैटिक तौर पर एक्सपोर्ट करता है:

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

इस रेफ़रंस का इस्तेमाल करके यह बताया जा सकता है कि इंडेक्स करने वाला या फिर डेटा वापस लाने वाला टूल, किस एम्बेडर का इस्तेमाल करता है. उदाहरण के लिए, अगर Chroma DB का इस्तेमाल किया जाता है, तो:

configureGenkit({
  plugins: [
    chroma([
      {
        embedder: textEmbeddingGecko,
        collectionName: 'my-collection',
      },
    ]),
  ],
});

इसके अलावा, सीधे तौर पर एम्बेड करने की सुविधा भी जनरेट की जा सकती है:

// import { embed, EmbedderArgument } from '@genkit-ai/ai/embedder';
const embedding = await embed({
  embedder: textEmbeddingGecko,
  content: 'How many widgets do you have in stock?',
});

Imagen3 मॉडल, उपयोगकर्ता के प्रॉम्प्ट से इमेज जनरेट करने की अनुमति देता है:

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

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

return response.media();

Vertex AI Model Garden पर Anthropic Claude 3

अगर आपके पास Vertex AI Model Garden में Claude 3 मॉडल (हाइकू, सोनेट या ऑपस) का ऐक्सेस है, तो उन्हें Genkit के साथ इस्तेमाल किया जा सकता है.

Vertex AI Model Garden मॉडल चालू करने के लिए, यहां कॉन्फ़िगरेशन का सैंपल दिया गया है:

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

export default configureGenkit({
  plugins: [
    vertexAI({
      location: 'us-central1',
      modelGarden: {
        models: [claude3Haiku, claude3Sonnet, claude3Opus],
      },
    }),
  ],
});

इसके बाद, उनका इस्तेमाल सामान्य मॉडल के तौर पर करें:

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

Vertex AI Model Garden पर Llama 3.1 405b

सबसे पहले, आपको Vertex AI Model Garden में Llama 3.1 API Service चालू करनी होगी.

Vertex AI प्लग इन में Llama 3.1 405b के लिए कॉन्फ़िगरेशन का सैंपल यहां दिया गया है:

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

export default configureGenkit({
  plugins: [
    vertexAI({
      location: 'us-central1',
      modelGarden: {
        models: [llama31],
      },
    }),
  ],
});

इसके बाद, इसका इस्तेमाल सामान्य मॉडल के तौर पर करें:

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

मूल्यांकन करने वाले

Vertex AI के रैपिड इवैल्यूएशन से एवैल्यूएटर का इस्तेमाल करने के लिए, अपने vertexAI प्लग इन कॉन्फ़िगरेशन में evaluation ब्लॉक जोड़ें.

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

export default configureGenkit({
  plugins: [
    vertexAI({
      projectId: 'your-cloud-project',
      location: 'us-central1',
      evaluation: {
        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 वेक्टर खोज सेवा पर काम करती है.

(RAG लागू करने में इंडेक्सर और रीट्रिवर का इस्तेमाल कैसे किया जाता है, यह जानने के लिए Retrieval-augmented generation पेज देखें.)

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 Cloud Console के वेक्टर सर्च सेक्शन में, एक नया इंडेक्स बनाएं. सबसे ज़रूरी ये सेटिंग हैं:

    • डाइमेंशन: चुने गए एम्बेडिंग मॉडल से जनरेट किए गए वेक्टर के डाइमेंशन की जानकारी दें. text-embedding-004 और text-multilingual-embedding-002 मॉडल से 768 सदिश मिलते हैं डाइमेंशन.

    • अपडेट करने का तरीका: स्ट्रीम किए जाने वाले अपडेट चुनें.

    इंडेक्स बनाने के बाद, उसे स्टैंडर्ड (सार्वजनिक) एंडपॉइंट पर डिप्लॉय करें.

  3. आपको जिस दस्तावेज़ स्टोर का इस्तेमाल करना है उसके लिए दस्तावेज़ इंडेक्स करने वाला और रिट्रीवर पाने का तरीका:

    Cloud Firestore

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

    BigQuery

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

    अन्य

    दस्तावेज़ों के अन्य स्टोर के साथ काम करने के लिए, DocumentRetriever और DocumentIndexer को लागू करने के लिए अपने तरीके बताए जा सकते हैं:

    const myDocumentRetriever: DocumentRetriever = async (neighbors: Neighbor[]) => {
      // Return the documents referenced by `neighbors`.
      // ...
    }
    const myDocumentIndexer: DocumentIndexer = async (documents: Document[]) => {
      // Add `documents` to storage.
      // ...
    }
    

    उदाहरण के लिए, Local File के साथ Vertex AI प्लगिन Retriever और Indexer का सैंपल देखें.

  4. अपने vertexAI प्लग इन कॉन्फ़िगरेशन में vectorSearchOptions ब्लॉक जोड़ें:

    import { configureGenkit } from '@genkit-ai/core';
    import { vertexAI, textEmbedding004 } from '@genkit-ai/vertexai';
    
    configureGenkit({
      plugins: [
        vertexAI({
          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,
            },
          ],
        }),
      ],
    });
    

    पहले चरण में चुना गया एम्बेडर और दस्तावेज़ इंडेक्स करने वाला टूल उपलब्ध कराएं और रिट्रीवर को डाउनलोड करें.

    आपके द्वारा पहले बनाए गए वेक्टर खोज इंडेक्स का उपयोग करने के लिए प्लग-इन को कॉन्फ़िगर करने के लिए, आपको कई मान देने होंगे, जिन्हें आप वेक्टर खोज सेक्शन:

    • indexId: इंडेक्स टैब में दिखता है
    • indexEndpointId: इंडेक्स एंडपॉइंट टैब में मौजूद है
    • deployedIndexId और publicDomainName: ये "डिप्लॉय किए गए इंडेक्स की जानकारी" पेज पर दिखते हैं. इसे खोलने के लिए, पहले बताए गए किसी भी टैब पर, डिप्लॉय किए गए इंडेक्स के नाम पर क्लिक करें
  5. अब जब सब कुछ कॉन्फ़िगर हो गया है, तो प्लग इन से retriever और indexer के रेफ़रंस इंपोर्ट करें:

    import {
      vertexAiIndexerRef,
      vertexAiRetrieverRef,
    } from '@genkit-ai/vertexai';
    

    index() और retrieve() के रेफ़रंस पास करें:

    await index({
      indexer: vertexAiIndexerRef({
        indexId: VECTOR_SEARCH_INDEX_ID,
      }),
      documents,
    });
    
    const res = await retrieve({
      retriever: vertexAiRetrieverRef({
        indexId: VECTOR_SEARCH_INDEX_ID,
      }),
      query: queryDocument,
    });
    

इनके लिए कोड सैंपल देखें: