Tous les produits
Search
Centre de documentation

Tablestore:Build your first knowledge base

Dernière mise à jour :Sep 25, 2026

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