Пример поиска запроса query_text
во всех опубликованных БЗ.
Сначала получаем список опубликованных БЗ и их service_token
которые нужны для query/batch
Затем получаем top_k
документов из каждой БЗ по запросу query_text
и объединяем их в общий список, сортируем чтобы получить общий top_k
от всех опрошенных БЗ.
Python example
import requests import pprint user_token = 'XXXXXXXXXXXXXXXXXXXXXXXXX' query_text = 'test' top_k = 3 print('1. collect all available knowledge bases') r = requests.get('https://croc-chat.autofaq.ai/core-api/crud/api/v1/services', headers={'AUTOFAQ-User-Token': user_token}) kb_services = r.json() pprint.pprint(kb_services) print('2. send query to all published') batch_query = [] for item in kb_services: if item['status'] == 'Serving': batch_query.append({ 'service_id': item['service_id'], 'service_token': item['tokens'][0], 'query': query_text, 'top_k': top_k, }) r = requests.post('https://croc-chat.autofaq.ai/core-api/query/api/v1/query/batch', json=batch_query) batch_response = r.json() print('batch response') pprint.pprint(batch_response) for i, item in enumerate(batch_response): print(f'\n Top {top_k} documents found from {kb_services[i]["service_id"]} - {kb_services[i]["name"]}') pprint.pprint(item['results']) print('3. merge results and sort together by score') total_results = [] [total_results.extend(item['results']) for item in batch_response] pprint.pprint(sorted(total_results, key=lambda x: x['score'], reverse=True))
curl example
curl -H "Content-Type: application/json" -XPOST https://api.autofaq.ai/v1/query/batch -d ' [ {"service_id": 89237, "service_token": "1cabef60a1ef44b34b3127295312acc6f", "query": "привет", "top_k": 3 }, {"service_id": 107742, "service_token": "46b30dc373644e24a557135a60287099", "query": "сколько стоит", "top_k": 3 } ] '