...
Затем получаем top_k
документов из каждой БЗ по запросу query_text
и объединяем их в общий список, сортируем чтобы получить общий top_k
от всех опрошенных БЗ.
Python example
Code Block |
---|
|
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
Code Block |
---|
|
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 }
]
' |