Commit Graph

22 Commits

Author SHA1 Message Date
vowelparrot 4ffc58e07b Add similarity_search_with_normalized_similarities (#2916)
Add a method that exposes a similarity search with corresponding
normalized similarity scores. Implement only for FAISS now.

### Motivation:

Some memory definitions combine `relevance` with other scores, like
recency , importance, etc.

While many (but not all) of the `VectorStore`'s expose a
`similarity_search_with_score` method, they don't all interpret the
units of that score (depends on the distance metric and whether or not
the the embeddings are normalized).

This PR proposes a `similarity_search_with_normalized_similarities`
method that lets consumers of the vector store not have to worry about
the metric and embedding scale.

*Most providers default to euclidean distance, with Pinecone being one
exception (defaults to cosine _similarity_).*

---------

Co-authored-by: Harrison Chase <hw.chase.17@gmail.com>
2023-04-15 21:06:08 -07:00
dev2049 7c73e9df5d Add kwargs to VectorStore.maximum_marginal_relevance (#2921)
Same as similarity_search, allows child classes to add vector
store-specific args (this was technically already happening in couple
places but now typing is correct).
2023-04-15 10:49:49 -07:00
Harrison Chase 1609950597 Harrison/retriever memory (#2804)
Co-authored-by: vowelparrot <130414180+vowelparrot@users.noreply.github.com>
2023-04-13 10:03:43 -07:00
Ankush Gola c1521ddbdb Add workaround for not having async vector store methods (#2733)
This allows us to use the async API for the Retrieval chains, though it is not guaranteed to be thread safe.
2023-04-11 18:49:08 -07:00
vowelparrot 0806951c07 Update VectorStore Class Method Typing (#2731)
Avoid using placeholder methods that only perform a `cast()`
operation because the typing would otherwise be inferred to be the
parent `VectorStore` class. This is unnecessary with TypeVar's.
2023-04-11 14:14:49 -07:00
Ankush Gola 6dbd29e440 add async vector operations in VectorStore base class (#2535)
not currently implemented by any subclasses
2023-04-07 07:22:14 -07:00
Kei Kamikawa 35a3218e84 supported async retriever (#2149) 2023-03-30 10:14:05 -04:00
Harrison Chase 76ecca4d53 redis retriever (#2060) 2023-03-27 19:51:23 -07:00
Harrison Chase 47d37db2d2 WIP: Harrison/base retriever (#1765) 2023-03-24 07:46:49 -07:00
Harrison Chase fab7994b74 Harrison/retrieval code (#1916) 2023-03-22 23:15:04 -07:00
Harrison Chase 0c84ce1082 Harrison/add documents (#1197)
Co-authored-by: OmriNach <32659330+OmriNach@users.noreply.github.com>
2023-02-20 21:02:28 -08:00
seanaedmiston f0a258555b Support similarity search by vector (in FAISS) (#961)
Alternate implementation to PR #960 Again - only FAISS is implemented.
If accepted can add this to other vectorstores or leave as
NotImplemented? Suggestions welcome...
2023-02-15 22:50:00 -08:00
Harrison Chase 983b73f47c add search kwargs (#664) 2023-01-20 07:42:08 -08:00
Harrison Chase 0d7aa1ee99 Harrison/docs to index (#419)
Add method for going directly from documents to VectorStores

Update notebook to showcase this functionality
2022-12-25 09:53:07 -05:00
Harrison Chase 46c428234f MMR example selector (#377)
implement max marginal relevance example selector
2022-12-19 17:09:27 -05:00
Harrison Chase 2163d064f3 add return of ids (#254)
not actually sure the desired return in add_example to example selector
is actually general/good - whats the use case?
2022-12-05 12:50:48 -08:00
Xupeng (Tony) Tong bb4bf9d6d0 chore: minor clean up / formatting (#233)
to get familiarize with the project
2022-12-01 10:50:36 -08:00
Samantha Whitmore 09f301cd38 Add add_example method to all ExampleSelector classes, with tests (#178)
Also updated docs, and noticed an issue with the add_texts method on
VectorStores that I had missed before -- the metadatas arg should be
required to match the classmethod which initializes the VectorStores
(the add_example methods break otherwise in the ExampleSelectors)
2022-11-23 13:12:47 -08:00
Samantha Whitmore 315b0c09c6 wip: add method for both docstore and embeddings (#119)
this will break atm but wanted to get thoughts on implementation.

1. should add() be on docstore interface?
2. should InMemoryDocstore change to take a list of documents as init?
(makes this slightly easier to implement in FAISS -- if we think it is
less clean then could expose a method to get the number of documents
currently in the dict, and perform the logic of creating the necessary
dictionary in the FAISS.add_texts method.

Co-authored-by: Harrison Chase <hw.chase.17@gmail.com>
2022-11-20 16:23:58 -08:00
Harrison Chase c02eb199b6 add few shot example (#148) 2022-11-19 20:32:45 -08:00
Samantha Whitmore 2ddab88c06 Update VectorStore interface to contain from_texts, enforce common in… (#97)
…terface
2022-11-08 21:55:22 -08:00
Samantha Whitmore 61f12229df Create VectorStore interface (#92) 2022-11-08 18:19:39 -08:00