Create VectorStore interface (#92)

pull/98/head
Samantha Whitmore 2 years ago committed by GitHub
parent b9f61390e9
commit 61f12229df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,9 +8,9 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"from langchain.embeddings.openai import OpenAIEmbeddings\n", "from langchain.embeddings.openai import OpenAIEmbeddings\n",
"from langchain.elastic_vector_search import ElasticVectorSearch\n", "from langchain.text_splitter import CharacterTextSplitter\n",
"from langchain.faiss import FAISS\n", "from langchain.vectorstores.elastic_vector_search import ElasticVectorSearch\n",
"from langchain.text_splitter import CharacterTextSplitter" "from langchain.vectorstores.faiss import FAISS"
] ]
}, },
{ {
@ -69,7 +69,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 5,
"id": "4906b8a3", "id": "4906b8a3",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -82,7 +82,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 6,
"id": "95f9eee9", "id": "95f9eee9",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [

@ -16,11 +16,10 @@ from langchain.chains import (
SQLDatabaseChain, SQLDatabaseChain,
) )
from langchain.docstore import Wikipedia from langchain.docstore import Wikipedia
from langchain.elastic_vector_search import ElasticVectorSearch
from langchain.faiss import FAISS
from langchain.llms import Cohere, HuggingFaceHub, OpenAI from langchain.llms import Cohere, HuggingFaceHub, OpenAI
from langchain.prompts import BasePrompt, DynamicPrompt, Prompt from langchain.prompts import BasePrompt, DynamicPrompt, Prompt
from langchain.sql_database import SQLDatabase from langchain.sql_database import SQLDatabase
from langchain.vectorstores import FAISS, ElasticVectorSearch
__all__ = [ __all__ = [
"LLMChain", "LLMChain",

@ -0,0 +1,6 @@
"""Wrappers on top of vector stores."""
from langchain.vectorstores.base import VectorStore
from langchain.vectorstores.elastic_vector_search import ElasticVectorSearch
from langchain.vectorstores.faiss import FAISS
__all__ = ["ElasticVectorSearch", "FAISS", "VectorStore"]

@ -0,0 +1,13 @@
"""Interface for vector stores."""
from abc import ABC, abstractmethod
from typing import List
from langchain.docstore.document import Document
class VectorStore(ABC):
"""Interface for vector stores."""
@abstractmethod
def similarity_search(self, query: str, k: int = 4) -> List[Document]:
"""Return docs most similar to query."""

@ -4,6 +4,7 @@ from typing import Callable, Dict, List
from langchain.docstore.document import Document from langchain.docstore.document import Document
from langchain.embeddings.base import Embeddings from langchain.embeddings.base import Embeddings
from langchain.vectorstores.base import VectorStore
def _default_text_mapping(dim: int) -> Dict: def _default_text_mapping(dim: int) -> Dict:
@ -27,7 +28,7 @@ def _default_script_query(query_vector: List[int]) -> Dict:
} }
class ElasticVectorSearch: class ElasticVectorSearch(VectorStore):
"""Wrapper around Elasticsearch as a vector database. """Wrapper around Elasticsearch as a vector database.
Example: Example:

@ -7,9 +7,10 @@ from langchain.docstore.base import Docstore
from langchain.docstore.document import Document from langchain.docstore.document import Document
from langchain.docstore.in_memory import InMemoryDocstore from langchain.docstore.in_memory import InMemoryDocstore
from langchain.embeddings.base import Embeddings from langchain.embeddings.base import Embeddings
from langchain.vectorstores.base import VectorStore
class FAISS: class FAISS(VectorStore):
"""Wrapper around FAISS vector database. """Wrapper around FAISS vector database.
To use, you should have the ``faiss`` python package installed. To use, you should have the ``faiss`` python package installed.
Loading…
Cancel
Save