@@ -116,4 +116,35 @@ def vector_search_distance_threshold(db):
116116 for entity in vector_query .fetch ():
117117 print (f"{ entity .id } " )
118118 # [END datastore_vector_search_distance_threshold]
119- return vector_query
119+ return vector_query
120+
121+
122+ def vector_search_large_query (db ):
123+ # [START datastore_vector_search_large_query]
124+ from google .cloud .datastore .vector import DistanceMeasure
125+ from google .cloud .datastore .vector import Vector
126+ from google .cloud .datastore .vector import FindNearest
127+
128+ # first, perform a vector search query retrieving just the keys
129+ vector_query = db .query (
130+ kind = "coffee-beans" ,
131+ find_nearest = FindNearest (
132+ vector_property = "embedding_field" ,
133+ query_vector = Vector ([3.0 , 1.0 , 2.0 ]),
134+ distance_measure = DistanceMeasure .EUCLIDEAN ,
135+ limit = 100 ,
136+ distance_result_property = "vector_distance" ,
137+ )
138+ )
139+ vector_query .keys_only ()
140+ vector_results = list (vector_query .fetch ())
141+ key_list = [entity .key for entity in vector_results ]
142+ # next, perfrom a second query for the remaining data
143+ full_results = db .get_multi (key_list )
144+ # combine and print results
145+ vector_map = {entity .key : entity for entity in vector_results }
146+ full_map = {entity .key : entity for entity in full_results }
147+ for key in key_list :
148+ print (f"distance: { vector_map [key ]['vector_distance' ]} entity: { full_map [key ]} " )
149+ # [END datastore_vector_search_large_query]
150+ return key_list , vector_results , full_results
0 commit comments