Now let’s practice to learn more how we can build such an AI Solution!
Prerequisites
Before installing the plugin, ensure you have the following installed:
- Node.js (version 12 or higher)
- npm (comes with Node.js)
- TypeScript (install globally via npm:
npm install -g typescript
) - Genkit (install globally via npm:
npm install -g genkit
)
First thing first, initiate the Genkit project with
genkit init
follow the instructions here.
Once you have the Genkit project installed, make sure the project is well prepared. You can try first by
genkit start
If it runs well and open the Genkit UI in a browser, then you are good to go!
Installing the HNSW plugin
To install the Genkit HNSW plugin, run the following command:
npm install genkitx-hnsw
We will be using 2 Genkit Plugins here.
- HNSW Indexer plugin
- HNSW Retriever plugin
1. HNSW Indexer Plugin
The HNSW Indexer plugin helps create a vector index from your data, which can be used as a knowledge reference for the HNSW Retriever.
Data Preparation
Prepare your data or documents, for instance, restaurant data, in a dedicated folder.
Registering the HNSW Indexer Plugin
Import the plugin into your Genkit project:
find genkit.config.ts file in your project, usually /root/src/genkit.config.ts.
Then import the plugin into the file.
import { hnswIndexer } from "genkitx-hnsw";
//
export default configureGenkit({
plugins: [
hnswIndexer({ apiKey: "GOOGLE_API_KEY" })
]
});
Running the Indexer
- Open the Genkit UI and select the registered HNSW Indexer plugin.
- Execute the flow with the required parameters:
dataPath
: Path to your data and documents.indexOutputPath
: Desired output path for the generated vector store index.
Vector Store Index Result
The HNSW vector store will be saved in the specified output path, ready for use with the HNSW Retriever plugin.
The HNSW Retriever plugin processes prompt with the Gemini LLM Model, enriched with additional specific information from the HNSW Vector index.
Registering the HNSW Retriever Plugin
Import the necessary plugins into your Genkit project:
import { googleAI } from "@genkit-ai/googleai";
import { hnswRetriever } from "genkitx-hnsw";
export default configureGenkit({
plugins: [
googleAI(),
hnswRetriever({ apiKey: "GOOGLE_API_KEY" })
]
});
Running the Retriever
- Open the Genkit UI and select the HNSW Retriever plugin.
- Execute the flow with the required parameters:
prompt
: Your input query is for the AI.indexPath
: Path to the vector index file generated by the HNSW Indexer plugin.
Example Prompt
To ask about the price list of a restaurant in Surabaya City:
prompt: "What is the price list of my restaurant in Surabaya City?"
indexPath: "/path/to/your/vector/index"
The integration of HNSW Vector index with Genkit significantly enhances the capabilities of Generative AI models by providing enriched context and specific knowledge.
This approach not only improves the accuracy of AI responses but also simplifies the process of knowledge integration, making it a powerful tool for various applications.
By following the steps outlined in this article, you can effectively leverage the HNSW Vector index to build more intelligent and context-aware AI systems in a very short time like instantly!
Hope this helps and see you in the next one!