Tous les produits
Search
Centre de documentation

Tablestore:Gestion des documents

Dernière mise à jour :Oct 15, 2026

Gérez les documents d'une base de connaissances : importation, interrogation, liste, mise à jour et suppression.

Prérequis

  • Vous avez créé une instance AgentStorage, obtenu son endpoint HTTPS et son nom, et créé une base de connaissances. Consultez la rubrique Gestion des bases de connaissances.

  • Pour télécharger des documents locaux, votre compte doit disposer d'un bucket OSS dans la même région que l'instance et l'autorisation OSS doit être configurée. Lors de l'initialisation du SDK, fournissez la configuration OSS supplémentaire (AccessKey et endpoint/bucket OSS).

  • Les métadonnées du document doivent correspondre au schéma de métadonnées défini pour la base de connaissances. Sinon, le document est marqué comme failed.

  • Si la fonctionnalité de sous-espace est activée pour la base de connaissances, spécifiez le paramètre subspace pour toutes les opérations sur les documents et les requêtes de récupération.

Formats de documents pris en charge

Type

Extension

PDF

.pdf

Word

.doc, .docx

Excel

.xls, .xlsx

PowerPoint

.ppt, .pptx

Texte brut

.txt

Markdown

.md

Texte structuré

.csv, .xml, .html, .json

Image

.jpeg, .png, .bmp, .webp, .gif, .tiff

L'importation d'images et la récupération multimodale nécessitent d'activer la fonctionnalité multimodale lors de la création de la base de connaissances. Cette option est irréversible. Les bases de connaissances sans activation multimodale ne peuvent ni vectoriser ni récupérer les images téléchargées.

Une seule requête accepte jusqu'à 10 documents, avec une taille de fichier maximale de 50 Mo. Pour demander des limites supérieures, soumettez un ticket ou rejoignez le groupe DingTalk de support technique Tablestore 36165029092 et contactez le support technique.

Cycle de vie des statuts des documents

Les documents passent par les statuts suivants, du téléchargement à la disponibilité pour la recherche :

Statut

Description

Opérations disponibles

Pending

Tâche de téléchargement reçue, en attente de traitement

Interroger le statut, supprimer

Indexing

Analyse, découpage et vectorisation

Interroger le statut, supprimer

Completed

Indexation terminée, document consultable

Rechercher, mettre à jour les métadonnées, supprimer, afficher les fragments

Failed

Échec de l'indexation

Afficher la raison de l'échec, supprimer, retélécharger

Deleting

Suppression du document et de ses fragments en cours

Attendez la fin de la suppression

Vous ne pouvez pas récupérer les documents dont le statut est Pending ou Indexing . Attendez que le statut passe à Completed avant de pouvoir les rechercher.

Importer des documents

Importez des documents dans une base de connaissances. Le système analyse, découpe, vectorise (Embedding) et construit l'index automatiquement. Un nouveau téléchargement avec la même valeur ossKey écrase le document original.

Le SDK propose trois méthodes d'importation :

Méthode

Méthode SDK

Description

Télécharger des fichiers locaux

upload_documents() / uploadDocuments()

Spécifiez les chemins d'accès aux fichiers locaux. Le SDK les télécharge automatiquement vers OSS, puis les ajoute à la base de connaissances.

Ajouter des fichiers OSS

add_documents() / addDocuments()

Spécifiez les chemins d'accès aux fichiers OSS existants.

Importation groupée depuis un répertoire OSS

add_documents() / addDocuments()

Spécifiez un chemin d'accès à un répertoire OSS. Le système analyse récursivement tous les fichiers du répertoire.

Pour obtenir la liste complète des champs de requête et les détails de la réponse, consultez la rubrique API d'importation de documents.

Console

  1. Ouvrez la carte de la base de connaissances cible, accédez à Document management et cliquez sur Upload document.

  2. Sélectionnez une méthode d'importation :

    • Upload file : sélectionnez l'emplacement de téléchargement (bucket OSS), puis choisissez les fichiers locaux à télécharger.

    • Upload folder : téléchargez par lot via un répertoire. Vous pouvez configurer la récursivité et définir les extensions de fichier à inclure ou à exclure.

    • Import from OSS : sélectionnez le bucket source de données, puis importez des fichiers ou des répertoires existants depuis OSS.

  3. Cliquez sur OK pour démarrer l'importation.

Si la base de connaissances dispose d'un schéma de métadonnées défini, le panneau de téléchargement affiche l'étape 3 « Metadata (optional) », où vous pouvez renseigner les champs correspondants pour le document. Les bases de connaissances sans schéma de métadonnées n'affichent pas cette étape.
Le type de fichier, la taille unitaire et la quantité par lot sont soumis aux limites indiquées dans le panneau de téléchargement. Après le téléchargement, les documents doivent passer par les phases d'analyse et de découpage. Ils ne seront consultables qu'une fois leur statut passé à Completed . Si une invite d'autorisation OSS apparaît, complétez l'autorisation avant de poursuivre.

SDK

Python

Lors de l'utilisation de upload_documents, l'initialisation de AgentStorageClient nécessite les paramètres oss_endpoint et oss_bucket_name. À défaut, une erreur ValueError est levée.

from tablestore_agent_storage import AgentStorageClient

# To upload local files, configure OSS (the SDK first uploads files to OSS, then triggers chunking and vectorization)
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>",
)

resp = client.upload_documents({
    "knowledgeBaseName": "product_docs_kb",
    "documents": [
        {
            "filePath": "/home/user/docs/product_manual.pdf",
            "metadata": {"author": "John", "category": "Product documentation"}
        },
        {
            "filePath": "/home/user/docs/faq.docx",
            "metadata": {"author": "Jane", "category": "FAQ"}
        }
    ]
})

for detail in resp["data"]["documentDetails"]:
    print(detail["ossKey"], detail["status"])

Ajouter des fichiers OSS

Lorsque les fichiers se trouvent déjà sur OSS, spécifiez directement la clé ossKey. L'authentification par clé API suffit.

from tablestore_agent_storage import AgentStorageClient

client = AgentStorageClient(
    api_key="<your-api-key>",
    ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
    ots_instance_name="<instance-name>",
)

resp = client.add_documents({
    "knowledgeBaseName": "product_docs_kb",
    "documents": [
        {
            "ossKey": "oss://example-bucket/docs/product_manual.pdf",
            "metadata": {"author": "John"}
        }
    ]
})

Importation groupée depuis un répertoire OSS

Spécifiez un chemin d'accès à un répertoire OSS. Le système analyse récursivement tous les fichiers du répertoire. Utilisez les filtres inclusionFilters et exclusionFilters pour filtrer selon des motifs de noms de fichiers.

resp = client.add_documents({
    "knowledgeBaseName": "product_docs_kb",
    "documents": [
        {
            "ossKey": "oss://example-bucket/docs/",
            "inclusionFilters": ["*.pdf", "*.docx"],
            "exclusionFilters": ["*draft*"]
        }
    ]
})

TypeScript

Pour télécharger des fichiers locaux en TypeScript, utilisez NodeAgentStorageClient et fournissez la configuration OSS.

import { NodeAgentStorageClient } from '@tablestore/agent-storage/node';

const client = new NodeAgentStorageClient({
  accessKeyId: '<AccessKey ID>',
  accessKeySecret: '<AccessKey Secret>',
  endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
  instanceName: '<instance-name>',
  ossEndpoint: 'https://oss-<region>.aliyuncs.com',
  ossBucketName: '<bucket-name>',
  ossAccessKeyId: '<AccessKey ID>',
  ossAccessKeySecret: '<AccessKey Secret>',
});

const resp = await client.uploadDocuments({
  knowledgeBaseName: 'product_docs_kb',
  documents: [
    {
      filePath: '/home/user/docs/product_manual.pdf',
      metadata: { author: 'John', category: 'Product documentation' },
    },
  ],
});

for (const detail of resp.data.documentDetails) {
  console.log(detail.ossKey, detail.status);
}

Ajouter des fichiers OSS

import { AgentStorageClient } from '@tablestore/agent-storage';

const client = new AgentStorageClient({
  apiKey: '<your-api-key>',
  endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
  instanceName: '<instance-name>',
});

const resp = await client.addDocuments({
  knowledgeBaseName: 'product_docs_kb',
  documents: [
    {
      ossKey: 'oss://example-bucket/docs/product_manual.pdf',
      metadata: { author: 'John' },
    },
  ],
});

Importation groupée depuis un répertoire OSS

const resp = await client.addDocuments({
  knowledgeBaseName: 'product_docs_kb',
  documents: [
    {
      ossKey: 'oss://example-bucket/docs/',
      inclusionFilters: ['*.pdf', '*.docx'],
      exclusionFilters: ['*draft*'],
    },
  ],
});

API

Appelez l'opération AddDocuments pour importer des documents. Pour obtenir la liste complète des champs de requête et les détails de la réponse, consultez la rubrique API d'importation de documents.

  • Un code HTTP 200 avec la valeur SUCCESS ne signifie pas que tous les documents ont été traités avec succès. Vérifiez individuellement le champ status de chaque document figurant dans documentDetails.

  • La valeur status: "succeed" indique que la tâche de téléchargement a été reçue, et non que l'indexation est terminée. Attendez que le statut du document passe à Completed avant de pouvoir le rechercher.

  • Si la fonctionnalité de sous-espace est activée pour la base de connaissances, transmettez le paramètre subspace. Sinon, l'erreur INVALID_PARAMETER est renvoyée.

  • Les champs de date dans les métadonnées doivent utiliser un format pris en charge (par exemple, yyyy-MM-dd HH:mm:ss). Les formats non pris en charge entraînent le marquage du document comme failed.

Interroger le statut d'indexation

Les documents subissent un traitement asynchrone après le téléchargement avant de devenir consultables. Pour confirmer la fin de l'indexation, il est recommandé d'utiliser un mécanisme d'interrogation avec backoff exponentiel.

Console

Dans la liste Document management, consultez le statut actuel de chaque document dans la colonne Status. Vous pouvez également utiliser le filtre de statut situé au-dessus de la liste (All / Pending / Indexing / Completed / Failed / Deleting) pour localiser rapidement les documents. Cliquez sur Details dans la colonne Actions pour afficher les informations complètes, notamment l'ID du document, le chemin OSS, le statut, le nombre de fragments, etc. Un statut Completed signifie que le document est consultable.

SDK

Python

import time

from tablestore_agent_storage import AgentStorageClient

client = AgentStorageClient(
    api_key="<your-api-key>",
    ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
    ots_instance_name="<instance-name>",
)

def wait_for_document(client, kb_name, doc_id, max_interval=30):
    """Poll document status with exponential backoff, waiting for indexing to complete."""
    interval = 3
    while True:
        resp = client.get_document({
            "knowledgeBaseName": kb_name,
            "docId": doc_id
        })
        status = resp["data"][0]["status"]
        if status == "Completed":
            print(f"Indexing complete, chunk count: {resp['data'][0].get('chunkNum', 'N/A')}")
            return resp
        elif status == "Failed":
            raise Exception(f"Indexing failed: {resp['data'][0].get('failedDetails')}")
        print(f"Current status: {status}, retrying in {interval}s...")
        time.sleep(interval)
        interval = min(interval * 2, max_interval)

wait_for_document(client, "product_docs_kb", "fc6ed97f-...")
La durée de traitement des documents dépend de la taille, du type et du nombre de fichiers. Les petits fichiers sont généralement traités en quelques secondes, tandis que les fichiers volumineux ou les importations par lot peuvent prendre plusieurs minutes.

TypeScript

import { AgentStorageClient } from '@tablestore/agent-storage';

const client = new AgentStorageClient({
  apiKey: '<your-api-key>',
  endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
  instanceName: '<instance-name>',
});

async function waitForDocument(kbName: string, docId: string, maxInterval = 30) {
  let interval = 3;
  while (true) {
    const resp = await client.getDocument({
      knowledgeBaseName: kbName,
      docId,
    });
    const doc = resp.data[0];
    if (doc.status === 'Completed') {
      console.log(`Indexing complete, chunk count: ${doc.chunkNum ?? 'N/A'}`);
      return resp;
    } else if (doc.status === 'Failed') {
      throw new Error(`Indexing failed: ${doc.failedDetails}`);
    }
    console.log(`Current status: ${doc.status}, retrying in ${interval}s...`);
    await new Promise((r) => setTimeout(r, interval * 1000));
    interval = Math.min(interval * 2, maxInterval);
  }
}

await waitForDocument('product_docs_kb', 'fc6ed97f-...');

API

Appelez l'opération GetDocument pour interroger le statut d'un document. Pour obtenir les détails complets des champs, consultez la rubrique API de récupération de document.

Interroger un document

Interrogez les informations détaillées d'un document spécifié, y compris son statut de traitement, le nombre de fragments et ses métadonnées. Fournissez soit l'identifiant docId, soit la clé ossKey.

Console

Dans la liste Document management, cliquez sur Details dans la colonne Actions du document cible pour afficher l'ID du document, son nom, le chemin OSS, le statut, le nombre de fragments, le sous-espace, l'ETag, ainsi que les dates de création et de mise à jour.

SDK

Python

from tablestore_agent_storage import AgentStorageClient

client = AgentStorageClient(
    api_key="<your-api-key>",
    ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
    ots_instance_name="<instance-name>",
)

resp = client.get_document({
    "knowledgeBaseName": "product_docs_kb",
    "docId": "fc6ed97f-..."
})

doc = resp["data"][0]
print(f"Status: {doc['status']}, chunk count: {doc.get('chunkNum', 'N/A')}")

TypeScript

import { AgentStorageClient } from '@tablestore/agent-storage';

const client = new AgentStorageClient({
  apiKey: '<your-api-key>',
  endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
  instanceName: '<instance-name>',
});

const resp = await client.getDocument({
  knowledgeBaseName: 'product_docs_kb',
  docId: 'fc6ed97f-...',
});

const doc = resp.data[0];
console.log(`Status: ${doc.status}, chunk count: ${doc.chunkNum ?? 'N/A'}`);

API

Appelez l'opération GetDocument pour interroger les détails d'un document. Pour obtenir les détails complets des champs, consultez la rubrique API de récupération de document.

Lorsque la même clé ossKey fait l'objet d'une création, puis d'une suppression, suivie d'une nouvelle création, l'appel à get_document peut renvoyer plusieurs enregistrements (y compris historiques). Utilisez le champ status pour identifier le document valide et sélectionnez l'enregistrement dont le statut est Completed .

Lister les documents

Parcourez la liste paginée des documents d'une base de connaissances.

Console

Accédez à la page Document management de la base de connaissances. La liste affiche le nom du document, les dates de création et de mise à jour, le nombre de fragments et le statut. Vous pouvez utiliser le filtre de statut situé au-dessus de la liste (All / Pending / Indexing / Completed / Failed / Deleting) pour localiser rapidement les documents.

SDK

Python

from tablestore_agent_storage import AgentStorageClient

client = AgentStorageClient(
    api_key="<your-api-key>",
    ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
    ots_instance_name="<instance-name>",
)

# Get the first page
resp = client.list_documents({
    "knowledgeBaseName": "product_docs_kb",
    "maxResults": 20
})
for doc in resp["data"]["documentDetails"]:
    print(f"[{doc['status']}] {doc['ossKey']} (chunks: {doc.get('chunkNum', '-')})")

# Paginate
next_token = resp["data"].get("nextToken")
if next_token:
    resp = client.list_documents({
        "knowledgeBaseName": "product_docs_kb",
        "maxResults": 20,
        "nextToken": next_token
    })

TypeScript

import { AgentStorageClient } from '@tablestore/agent-storage';

const client = new AgentStorageClient({
  apiKey: '<your-api-key>',
  endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
  instanceName: '<instance-name>',
});

const resp = await client.listDocuments({
  knowledgeBaseName: 'product_docs_kb',
  maxResults: 20,
});
for (const doc of resp.data.documentDetails) {
  console.log(`[${doc.status}] ${doc.ossKey} (chunks: ${doc.chunkNum ?? '-'})`);
}

API

Appelez l'opération ListDocuments pour lister les documents. Pour obtenir les détails complets des champs, consultez la rubrique API de liste des documents.

  • La valeur par défaut de maxResults est 10, avec un maximum de 1 000.

  • Le paramètre subspace accepte une liste multivaluée pouvant contenir jusqu'à 10 entrées. Le dépassement de cette limite renvoie une erreur. Ce paramètre est obligatoire lorsque la fonctionnalité de sous-espace est activée.

Mettre à jour les métadonnées d'un document

Mettez à jour les métadonnées d'un document spécifié. Seuls les documents dont le statut est Completed peuvent voir leurs métadonnées mises à jour. L'appel de cette opération sur des documents ayant un autre statut renvoie une erreur.

Console

La console ne permet pas de modifier les métadonnées des documents. Utilisez le SDK ou l'API pour effectuer la mise à jour.

SDK

Python

from tablestore_agent_storage import AgentStorageClient

client = AgentStorageClient(
    api_key="<your-api-key>",
    ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
    ots_instance_name="<instance-name>",
)

resp = client.update_document({
    "knowledgeBaseName": "product_docs_kb",
    "docId": "fc6ed97f-...",
    "metadata": {"author": "John", "category": "Technical documentation", "version": 2}
})

print(f"Update status: {resp['data']['updateStatus']}")  # UPDATED or NO_OP

TypeScript

import { AgentStorageClient } from '@tablestore/agent-storage';

const client = new AgentStorageClient({
  apiKey: '<your-api-key>',
  endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
  instanceName: '<instance-name>',
});

const resp = await client.updateDocument({
  knowledgeBaseName: 'product_docs_kb',
  docId: 'fc6ed97f-...',
  metadata: { author: 'John', category: 'Technical documentation', version: 2 },
});

console.log(`Update status: ${resp.data.updateStatus}`); // UPDATED or NO_OP

API

Appelez l'opération UpdateDocument pour mettre à jour les métadonnées d'un document. Pour obtenir les détails complets des champs, consultez la rubrique API de mise à jour de document.

  • Les métadonnées utilisent un mode de mise à jour par remplacement. Les valeurs transmises remplacent intégralement les métadonnées existantes. Si vous souhaitez mettre à jour un seul champ, vous devez inclure tous les champs.

  • Transmettre la valeur "metadata": null efface toutes les métadonnées. Omettre le champ metadata conserve les valeurs originales.

  • La taille totale des métadonnées (clé + valeur) est limitée à 4 Ko, avec un maximum de 200 champs.

Supprimer des documents

Important : La suppression d'un document entraîne également la suppression de toutes ses données de fragments. Cette opération est irréversible.

Console

Dans la liste Document management, sélectionnez un ou plusieurs documents et cliquez sur Batch delete, ou cliquez sur Delete dans la colonne Actions d'une ligne unique. Une boîte de dialogue de confirmation s'affiche : « Are you sure you want to delete the document? This action cannot be undone. » Cliquez sur OK pour confirmer la suppression.

SDK

Python

from tablestore_agent_storage import AgentStorageClient

client = AgentStorageClient(
    api_key="<your-api-key>",
    ots_endpoint="https://<instance>.<region>.ots.aliyuncs.com",
    ots_instance_name="<instance-name>",
)

resp = client.delete_documents({
    "knowledgeBaseName": "product_docs_kb",
    "documents": [
        {"docId": "fc6ed97f-..."},
        {"ossKey": "oss://example-bucket/docs/faq.docx"}
    ]
})

# Check each deletion result
for detail in resp["data"]["documentDetails"]:
    print(f"{detail['ossKey']}: {detail['status']}")

TypeScript

import { AgentStorageClient } from '@tablestore/agent-storage';

const client = new AgentStorageClient({
  apiKey: '<your-api-key>',
  endpoint: 'https://<instance>.<region>.ots.aliyuncs.com',
  instanceName: '<instance-name>',
});

const resp = await client.deleteDocuments({
  knowledgeBaseName: 'product_docs_kb',
  documents: [
    { docId: 'fc6ed97f-...' },
    { ossKey: 'oss://example-bucket/docs/faq.docx' },
  ],
});

// Check each deletion result
for (const detail of resp.data.documentDetails) {
  console.log(`${detail.ossKey}: ${detail.status}`);
}

API

Appelez l'opération DeleteDocuments pour supprimer des documents. Pour obtenir les détails complets des champs, consultez la rubrique API de suppression de documents.

  • Comme pour l'opération AddDocuments, vérifiez individuellement les résultats de suppression en examinant le champ status de chaque document figurant dans documentDetails.

Rubriques connexes