Cet exemple utilise le SDK Python pour réaliser une boucle minimale : créer une base de connaissances, téléverser un document local, attendre la fin de l'indexation et effectuer une recherche.
Prérequis
Vous avez créé une instance AgentStorage et obtenu son nom ainsi que son endpoint. La base de connaissances sera créée dans cette instance.
Vous avez créé un bucket OSS dans la même région et autorisé Tablestore à lire et écrire dans OSS.
Vous disposez de votre AccessKey ID et de votre AccessKey Secret. Dans les environnements de production, utilisez un utilisateur RAM ou des identifiants temporaires.
Vous disposez localement d'un fichier PDF, Word, Markdown ou texte pour les tests.
Étape 1 : Installez le SDK
pip install tablestore-agent-storage
Étape 2 : Créez le client
from tablestore_agent_storage import AgentStorageClient
import time
client = AgentStorageClient(
access_key_id="<AccessKey ID>",
access_key_secret="<AccessKey Secret>",
ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
ots_instance_name="<instance-name>",
oss_endpoint="https://oss-<region>.aliyuncs.com",
oss_bucket_name="<bucket-name>",
)
Étape 3 : Créez une base de connaissances et téléversez des documents
client.create_knowledge_base({
"knowledgeBaseName": "product_docs_kb",
"description": "Product documentation knowledge base",
})
response = client.upload_documents({
"knowledgeBaseName": "product_docs_kb",
"documents": [{"filePath": "/path/to/product-guide.pdf"}],
})
doc_id = response["data"]["documentDetails"][0]["docId"]
Le SDK téléverse d'abord le fichier local vers OSS, puis soumet une tâche d'importation asynchrone. Si vous ne spécifiez aucune configuration de recherche lors de la création de la base de connaissances, le service applique la configuration par défaut.
Étape 4 : Attendez que le document soit consultable
deadline = time.time() + 300
while time.time() < deadline:
response = client.get_document({
"knowledgeBaseName": "product_docs_kb",
"docId": doc_id,
})
document = response["data"][0]
status = document["status"]
if status == "completed":
break
if status == "failed":
raise RuntimeError(document.get("message", "Document processing failed"))
time.sleep(5)
else:
raise TimeoutError("Timed out waiting for document indexing")
Un document n'est pas consultable tant qu'il se trouve dans l'état pending ou indexing. Le code de production doit utiliser un mécanisme d'interrogation avec backoff et un délai d'attente global, et gérer l'état failed.
Étape 5 : Effectuez une recherche
response = client.retrieve({
"knowledgeBaseName": "product_docs_kb",
"retrievalQuery": {
"type": "TEXT",
"text": "What are the installation steps for the product?",
},
})
for item in response["data"]["retrievalResults"]:
print(f"[{item['score']:.4f}] {item['content'][:120]}")
Les étapes précédentes couvrent l'intégralité du pipeline, depuis le document brut jusqu'à l'indexation des fragments et la récupération du contenu pertinent. Les résultats de la recherche constituent des fragments de preuve destinés aux applications RAG, et non des réponses finales générées par un modèle.
Étapes suivantes
En savoir plus sur le Knowledge Storage Service : Knowledge Storage Service
Importer des fichiers ou répertoires OSS : Document management
Ajuster la recherche hybride et le reclassement : Retrieval and Ranking
Utiliser TypeScript, la CLI ou le Dashboard : Agent Storage SDK, Command-line tool