6
6
import aiohttp
7
7
import openai
8
8
from azure .search .documents .aio import SearchClient
9
- from azure .search .documents .models import QueryType
9
+ from azure .search .documents .models import QueryType , RawVectorQuery , VectorQuery
10
10
11
11
from approaches .approach import Approach
12
12
from core .messagebuilder import MessageBuilder
@@ -143,12 +143,12 @@ async def run_until_final_call(
143
143
# STEP 2: Retrieve relevant documents from the search index with the GPT optimized query
144
144
145
145
# If retrieval mode includes vectors, compute an embedding for the query
146
+ vectors : list [VectorQuery ] = []
146
147
if has_vector :
147
148
embedding_args = {"deployment_id" : self .embedding_deployment } if self .openai_host == "azure" else {}
148
149
embedding = await openai .Embedding .acreate (** embedding_args , model = self .embedding_model , input = query_text )
149
150
query_vector = embedding ["data" ][0 ]["embedding" ]
150
- else :
151
- query_vector = None
151
+ vectors .append (RawVectorQuery (vector = query_vector , k = 50 , fields = "embedding" ))
152
152
153
153
# Only keep the text query if the retrieval mode uses text, otherwise drop it
154
154
if not has_text :
@@ -165,19 +165,10 @@ async def run_until_final_call(
165
165
semantic_configuration_name = "default" ,
166
166
top = top ,
167
167
query_caption = "extractive|highlight-false" if use_semantic_captions else None ,
168
- vector = query_vector ,
169
- top_k = 50 if query_vector else None ,
170
- vector_fields = "embedding" if query_vector else None ,
168
+ vector_queries = vectors ,
171
169
)
172
170
else :
173
- r = await self .search_client .search (
174
- query_text ,
175
- filter = filter ,
176
- top = top ,
177
- vector = query_vector ,
178
- top_k = 50 if query_vector else None ,
179
- vector_fields = "embedding" if query_vector else None ,
180
- )
171
+ r = await self .search_client .search (query_text , filter = filter , top = top , vector_queries = vectors )
181
172
if use_semantic_captions :
182
173
results = [
183
174
doc [self .sourcepage_field ] + ": " + nonewlines (" . " .join ([c .text for c in doc ["@search.captions" ]]))
0 commit comments