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 supports both browser and Node.js environments. To install MeMemo, you can use npm:
npm install mememoThen, 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 [email protected]:poloclub/mememo.gitInstall the dependencies:
npm installUse Vitest for unit testing:
npm run test
Clone or download this repository:
git clone [email protected]:poloclub/mememo.gitNavigate to the example folder:
cd ./examples/rag-playgroundInstall the dependencies:
npm installThen 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.