https://github.com/poloclub/mememo
A JavaScript library that brings vector search and RAG to your browser!
https://github.com/poloclub/mememo
browser document-search gen-ai image-search llm rag vector-database vector-search
Last synced: about 1 year ago
JSON representation
A JavaScript library that brings vector search and RAG to your browser!
- Host: GitHub
- URL: https://github.com/poloclub/mememo
- Owner: poloclub
- License: mit
- Created: 2024-01-28T20:21:53.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-15T19:13:37.000Z (almost 2 years ago)
- Last Synced: 2025-03-24T05:38:01.314Z (about 1 year ago)
- Topics: browser, document-search, gen-ai, image-search, llm, rag, vector-database, vector-search
- Language: TypeScript
- Homepage: https://poloclub.github.io/mememo/
- Size: 66.7 MB
- Stars: 105
- Watchers: 3
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-vector-databases - MeMemo - A JavaScript library that brings vector search and RAG (Retrieval-Augmented Generation) to browser environments, enabling efficient searching through millions of vectors using HNSW algorithm with IndexedDB and Web Workers. ([Read more](/details/mememo.md)) `Javascript` `Browser` `Rag` (SDKs & Libraries)
- awesome - poloclub/mememo - A JavaScript library that brings vector search and RAG to your browser! (TypeScript)
README
[](https://github.com/poloclub/mememo/actions/workflows/build.yml)
[](https://www.npmjs.com/package/mememo)
[](https://github.com/poloclub/mememo/blob/main/LICENSE)
[](https://arxiv.org/abs/2407.01972)
[](https://doi.org/10.1145/3626772.3657662)
A JavaScript library that brings vector search and RAG to your browser!
🤖 ML Paper Reviewer
🌠Prompt Enhancer
🌱 Responsible AI Assistant
## What is MeMemo?
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.✨
### Features
## Getting Started
### Installation
MeMemo supports both browser and Node.js environments. To install MeMemo, you can use `npm`:
```bash
npm install mememo
```
### Vector Search and Storage in Browsers
Then, you can create a vector index and do an approximate nearest neighbor search through two functions:
```typescript
// 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);
```
## Developing MeMemo
Clone or download this repository:
```bash
git clone git@github.com:poloclub/mememo.git
```
Install the dependencies:
```bash
npm install
```
Use Vitest for unit testing:
```
npm run test
```
## Developing the RAG Playground Examples
Clone or download this repository:
```bash
git clone git@github.com:poloclub/mememo.git
```
Navigate to the example folder:
```bash
cd ./examples/rag-playground
```
Install the dependencies:
```bash
npm install
```
Then run Loan Explainer:
```
npm run dev
```
Navigate to localhost:3000. You should see three Explainers running in your browser :)
## Credits
MeMemo is created by Jay Wang and Polo Chau.
## Citation
To learn more about MeMemo, check out our [research paper](https://arxiv.org/abs/2407.01972) published at SIGIR'24.
```bibtex
@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}
}
```
## License
The software is available under the [MIT License](https://github.com/poloclub/mememo/blob/main/LICENSE).
## Contact
If you have any questions, feel free to [open an issue](https://github.com/poloclub/mememo/issues/new) or contact [Jay Wang](https://zijie.wang).