Sorry, this PR got a little big but I think it does some good stuff. I tried to organize commit-by-commit so that should make a little more consumable.
Vertex AI Vector search allows you to configure an index to be hosted using the a REST (as opposed to gRPC) approach. This is a lot easier to debug and interact with but might be a little slower so we want to give users the option to do both. Because both use fairly different APIs, the interaction was wrapped in a common interface with a common MatchResult class. With this PR we will have the choice of which endpoint method to use per vector search index.
So in more detail, what does this PR do:
It makes sure that migrations are sorted alphabetically. E.g. there are two migrations in this PR and the files end up looking like:
Adds support for REST API fronted Vertex search indexes (there are 2 new fields on the index table that can be set in the admin UI too:
is grpc
api endpoint (needed for the REST API)
Introduces mockito and parameterized libraries to unit test these calls more easily
Removed a unique constraint on the model path field since we may want the same model to be used by different index objects (note: we could have kept the constraint and just changed the index to allow sourcing from the same model but that would have gotten a lot trickier)
In order to support duplicating objects, added a new "Clone" action in the admin view which allows admins to create new users, models and indexes with the same initial values as existing objects)
Added instructions for testing gRPC index queries locally (it does require being on the VPN but is really helpful)
Drive by: made the query-cells-by-id return the valid fields to use if an invalid field was passed in
General things:
code coverage gets run on tox -e unit now
git ignore the virtual env and vscode config (we may want to check that in but happy to hold off)
Sorry, this PR got a little big but I think it does some good stuff. I tried to organize commit-by-commit so that should make a little more consumable.
Vertex AI Vector search allows you to configure an index to be hosted using the a REST (as opposed to gRPC) approach. This is a lot easier to debug and interact with but might be a little slower so we want to give users the option to do both. Because both use fairly different APIs, the interaction was wrapped in a common interface with a common
MatchResult
class. With this PR we will have the choice of which endpoint method to use per vector search index.So in more detail, what does this PR do:
query-cells-by-id
return the valid fields to use if an invalid field was passed inGeneral things:
tox -e unit
now