Creates a query table.
(query, queries, encoded_queries, extra_params=None)
| 258 | |
| 259 | class="cm"># STEP_START define_bulk_query |
| 260 | def create_query_table(query, queries, encoded_queries, extra_params=None): |
| 261 | class="st">""" |
| 262 | Creates a query table. |
| 263 | class="st">""" |
| 264 | results_list = [] |
| 265 | for i, encoded_query in enumerate(encoded_queries): |
| 266 | result_docs = ( |
| 267 | client.ft(class="st">"idx:bikes_vss") |
| 268 | .search( |
| 269 | query, |
| 270 | {class="st">"query_vector": np.array(encoded_query, dtype=np.float32).tobytes()} |
| 271 | | (extra_params if extra_params else {}), |
| 272 | ) |
| 273 | .docs |
| 274 | ) |
| 275 | for doc in result_docs: |
| 276 | vector_score = round(1 - float(doc.vector_score), 2) |
| 277 | results_list.append( |
| 278 | { |
| 279 | class="st">"query": queries[i], |
| 280 | class="st">"score": vector_score, |
| 281 | class="st">"id": doc.id, |
| 282 | class="st">"brand": doc.brand, |
| 283 | class="st">"model": doc.model, |
| 284 | class="st">"description": doc.description, |
| 285 | } |
| 286 | ) |
| 287 | |
| 288 | class="cm"># Optional: convert the table to Markdown using Pandas |
| 289 | queries_table = pd.DataFrame(results_list) |
| 290 | queries_table.sort_values( |
| 291 | by=[class="st">"query", class="st">"score"], ascending=[True, False], inplace=True |
| 292 | ) |
| 293 | queries_table[class="st">"query"] = queries_table.groupby(class="st">"query")[class="st">"query"].transform( |
| 294 | lambda x: [x.iloc[0]] + [class="st">""] * (len(x) - 1) |
| 295 | ) |
| 296 | queries_table[class="st">"description"] = queries_table[class="st">"description"].apply( |
| 297 | lambda x: (x[:497] + class="st">"...") if len(x) > 500 else x |
| 298 | ) |
| 299 | return queries_table.to_markdown(index=False) |
| 300 | |
| 301 | |
| 302 | class="cm"># STEP_END |
no test coverage detected