A JavaScript library that brings vector search and RAG to your browser!
🤖 ML Paper Reviewer | 🌠 Prompt Enhancer | 🌱 Responsible AI Assistant |
MeMemo is a JavaScript library that adapts the state-of-the-art approximate nearest neighbor search technique HNSW to browser environments. Developed with modern and native Web technologies, such as IndexedDB and Web Workers, our toolkit leverages client-side hardware capabilities to enable researchers and developers to efficiently search through millions of high-dimensional vectors in browsers. MeMemo enables exciting new design and research opportunities, such as private and personalized content creation and interactive prototyping, as demonstrated in our example application RAG Playground.✨
mememo-demo.mp4
MeMemo supports both browser and Node.js environments. To install MeMemo, you can use npm
:
npm install mememo
Then, you can create a vector index and do an approximate nearest neighbor search through two functions:
// Import the HNSW class from the MeMemo module
import { HNSW } from 'mememo';
// Creating a new index
const index = new HNSW({ distanceFunction: 'cosine' });
// Inserting elements into our index in batches
let keys: string[];
let values: number[][];
await index.bulkInsert(keys, values);
// Find k-nearest neighbors
let query: number[];
const { keys, distances } = await index.query(query, k);
Clone or download this repository:
git clone git@github.com:poloclub/mememo.git
Install the dependencies:
npm install
Use Vitest for unit testing:
npm run test
Clone or download this repository:
git clone git@github.com:poloclub/mememo.git
Navigate to the example folder:
cd ./examples/rag-playground
Install the dependencies:
npm install
Then run Loan Explainer:
npm run dev
Navigate to localhost:3000. You should see three Explainers running in your browser :)
MeMemo is created by Jay Wang and Polo Chau.
To learn more about MeMemo, check out our research paper published at SIGIR'24.
@inproceedings{wangMeMemoOndeviceRetrieval2024,
title = {{{MeMemo}}: {{On-device Retrieval Augmentation}} for {{Private}} and {{Personalized Text Generation}}},
booktitle = {Proceedings of the 47th {{International ACM SIGIR Conference}} on {{Research}} and {{Development}} in {{Information Retrieval}}},
author = {Wang, Zijie J. and Chau, Duen Horng},
year = {2024},
urldate = {2024-06-26},
langid = {english}
}
The software is available under the MIT License.
If you have any questions, feel free to open an issue or contact Jay Wang.