Skip to content

Commit

Permalink
community[minor]: Add VDMS vectorstore (langchain-ai#19551)
Browse files Browse the repository at this point in the history
- **Description:** Add support for Intel Lab's [Visual Data Management
System (VDMS)](https://github.com/IntelLabs/vdms) as a vector store
- **Dependencies:** `vdms` library which requires protobuf = "4.24.2".
There is a conflict with dashvector in `langchain` package but conflict
is resolved in `community`.
- **Contribution maintainer:** [@cwlacewe](https://github.com/cwlacewe)
- **Added tests:**
libs/community/tests/integration_tests/vectorstores/test_vdms.py
- **Added docs:** docs/docs/integrations/vectorstores/vdms.ipynb
- **Added cookbook:** cookbook/multi_modal_RAG_vdms.ipynb

---------

Co-authored-by: Eugene Yurtsev <[email protected]>
Co-authored-by: Bagatur <[email protected]>
Co-authored-by: Bagatur <[email protected]>
  • Loading branch information
4 people authored and gkorland committed Mar 30, 2024
1 parent 822a121 commit aed54ab
Show file tree
Hide file tree
Showing 12 changed files with 3,705 additions and 20 deletions.
526 changes: 526 additions & 0 deletions cookbook/multi_modal_RAG_vdms.ipynb

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
# ATTENTION: When adding a service below use a non-standard port
# increment by one from the preceding port.
# For credentials always use `langchain` and `langchain` for the
# username and password.
# username and password.
version: "3"
name: langchain-tests

services:
redis:
image: redis/redis-stack-server:latest
# We use non standard ports since
# We use non standard ports since
# these instances are used for testing
# and users may already have existing
# redis instances set up locally
Expand Down Expand Up @@ -73,6 +73,11 @@ services:
retries: 60
volumes:
- postgres_data_pgvector:/var/lib/postgresql/data
vdms:
image: intellabs/vdms:latest
container_name: vdms_container
ports:
- "6025:55555"

volumes:
postgres_data:
Expand Down
62 changes: 62 additions & 0 deletions docs/docs/integrations/providers/vdms.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# VDMS

> [VDMS](https://github.com/IntelLabs/vdms/blob/master/README.md) is a storage solution for efficient access
> of big-”visual”-data that aims to achieve cloud scale by searching for relevant visual data via visual metadata
> stored as a graph and enabling machine friendly enhancements to visual data for faster access.
## Installation and Setup

### Install Client

```bash
pip install vdms
```

### Install Database

There are two ways to get started with VDMS:

#### Install VDMS on your local machine via docker
```bash
docker run -d -p 55555:55555 intellabs/vdms:latest
```

#### Install VDMS directly on your local machine
Please see [installation instructions](https://github.com/IntelLabs/vdms/blob/master/INSTALL.md).



## VectorStore

The vector store is a simple wrapper around VDMS. It provides a simple interface to store and retrieve data.

```python
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter

loader = TextLoader("./state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

from langchain_community.vectorstores import VDMS
from langchain_community.vectorstores.vdms import VDMS_Client
from langchain_community.embeddings.huggingface import HuggingFaceEmbeddings

client = VDMS_Client("localhost", 55555)
vectorstore = VDMS.from_documents(
docs,
client=client,
collection_name="langchain-demo",
embedding_function=HuggingFaceEmbeddings(),
engine="FaissFlat"
distance_strategy="L2",
)

query = "What did the president say about Ketanji Brown Jackson"
results = vectorstore.similarity_search(query)
```

For a more detailed walkthrough of the VDMS wrapper, see [this notebook](/docs/integrations/vectorstores/vdms)


Loading

0 comments on commit aed54ab

Please sign in to comment.