Fájlismereti forrás létrehozása (előzetes verzió)

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Important

Az (előzetes verzióban) megjelölt funkciókra, képességekre vagy tulajdonságokra nem vonatkozik szolgáltatási szintű szerződés, nem ajánlott éles számítási feladatokhoz, és az általános elérhetővé válásuk előtt változhatnak vagy korlátozhatók. Az Azure AI Keresés előzetes verziójú kifejezések az összes előzetes verziós funkcióra vonatkoznak, függetlenül attól, hogy önálló vagy egy általánosan elérhető funkció része.

A fájlalapú tudásforrás (előzetes) a kis és közepes méretű fájlkészleteket közvetlenül az Azure AI Keresésbe tölti fel az ügynökalapú visszakereséshez. A tudásbázisok egymástól függetlenül jönnek létre, egy tudásbázisban hivatkoznak rá, és földi adatként használják, amikor a tudásbázist futtatókörnyezetben kérdezik le.

A fájlismereti források akkor hasznosak, ha felügyelt feltöltési felületet szeretne ahelyett, hogy kiépítenie Azure Storage, konfigurálja a hozzáférést, és egy indexelő folyamatot hozna létre egy külső tárolón keresztül. Azure AI Keresés feldolgozza a feltöltött fájlokat, hogy a kinyert tartalom lekérhető legyen egy tudásbázisból.

Használjon inkább blob-tudásbázist, ha a fájlok már Azure Blob Storage vagy Azure Data Lake Storage Gen2 vannak, ha a fájlkészlet túllépi vagy valószínűleg meghaladja a fájlismereti forrás korlátait, vagy ha ütemezett betöltésre van szüksége. Akkor is használjon blobszintű tudásbázist, ha Azure Blob Storage életciklus-kezelési szabályzatokkal szeretné kezelni a forrásblobokat, vagy ha dokumentumszintű engedélyekre (előzetes verzió) van szüksége a Azure Storage engedélyeinek alapján.

Használat támogatása

Azure Portál Microsoft Foundry portál .NET SDK Python SDK Java SDK JavaScript SDK REST API
❌ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Prerequisites

  • Egy Azure AI Keresés szolgáltatás bármely régióban, amely lehetővé teszi az intelligens adatlekérést. A fájlismereti források támogatják a dedikált és a kiszolgáló nélküli díjszabási modelleket is. A modell és a szint részleteiért lásd: Díjszabási modell és szolgáltatási szint kiválasztása.

  • Tekintse át Azure AI Keresés költségeket. A modellhívások, a vektorizálás és más AI-feldolgozás külön díjakat vonhatnak maga után.

  • Kiszolgáló nélküli, sikeres fájlbetöltési műveletek számlázható számítást használnak fel. A sikertelen feltöltések nem járnak kiszolgáló nélküli számítási költségekkel.

  • Ha a havi ingyenes juttatáson túl fizetett ügynöki lekérésre van szüksége, engedélyezze a standard ügynöki lekérési tervet. A knowledgeRetrieval=standard beállítás eltér a kiszolgáló nélküli számítási és tárolási díjaktól, és nem választ ki díjszabási modellt.

  • Támogatott formátumú fájlok.

  • Engedély tudásbázisok létrehozásához. Konfigurálja a kulcs nélküli hitelesítést a keresési szolgáltatás közreműködői szerepkörével a felhasználói fiókjához rendelve (ajánlott), vagy használjon rendszergazdai API-kulcsot.

  • Ha a tudásforrás beágyazásokhoz Azure OpenAI-modellt ad meg, a keresési szolgáltatásnak a Microsoft Foundry-erőforráson felügyelt identitással kell rendelkeznie Cognitive Services User engedélyekkel.

    • Ha az Foundry-erőforrás nyilvános hálózati hozzáférése le van tiltva, hozzon létre egy foundry_accountmegosztott privát hivatkozást a keresési szolgáltatásból az Foundry-erőforráshoz, és engedélyezze az erőforrás Engedélyezési Azure szolgáltatásait a megbízható szolgáltatások listájának beállításában.
  • Ha a tudásbázis megadja a standard tartalomkinyerési módot, tekintse át a Azure Tartalomértés képesség követelményeit.

    • A használat díja a aiServices segítségével konfigurált Foundry-erőforráshoz tartozó Foundry Toolsban elérhető Azure Content Understanding díjszabása szerint kerül felszámításra.

    • Az egyes beépített készségek számára elérhető napi 20 dokumentumos ingyenes juttatás nem érvényes.

    • A cikkben szereplő példához szüksége van az Foundry erőforrásvégpontra és -kulcsra, valamint Azure OpenAI-beágyazási és csevegés-befejezési modell adataira.

  • A legújabb Azure.Search.Documents előzetes csomag: dotnet add package Azure.Search.Documents --prerelease

  • Kulcs nélküli hitelesítés esetén a Azure.Identity csomag: dotnet add package Azure.Identity

  • A legújabb azure-search-documents előzetes csomag: pip install --pre azure-search-documents

  • Kulcs nélküli hitelesítés esetén a azure-identity csomag: pip install azure-identity

  • A Search Service REST API 2026-08-01 előzetes verziója .

  • Kulcs nélküli hitelesítéshez minden HTTP-kérés fejlécében adjon meg egy Authorization.

Fájltámogatás és korlátozások

Mielőtt létrehoz egy fájlismereti forrást, tekintse át a fájlok feltöltésére, kinyerésére és kezelésére vonatkozó követelményeket és korlátokat.

Támogatott tartalomtípusok

A fájlismereti források az észlelt tartalomtípus alapján fogadják el a fájlokat. A hívó által biztosított tartalomtípus nem bírálja felül az észlelést.

A támogatott tartalomtípusok a következők:

  • PDF
  • Word (.doc, .docx)
  • PowerPoint (.ppt, .pptx)
  • Excel (.xls, .xlsx)
  • JSON
  • Rendszerhéj-parancsprogramok
  • A következőként észlelt tartalom: text/*, például .txt, .md, .html és .csv

Támogatott kinyerési módok

  • A felsorolt tartalomtípusok esetében mind a 2026-05-01-preview, mind a 2026-08-01-preview támogatja a minimal-t. standard csak itt érhető el: 2026-08-01-preview

  • A(z) image/*-ként észlelt tartalom nem támogatott itt: 2026-05-01-preview. A 2026-08-01-preview esetében használja a standard kinyerést. minimal az extrakció http-állapotot 415 ad vissza mindkét verzióban.

Korlátok és fájlműveletek

A korlátok és a támogatott fájlműveletek API-verziónként eltérőek.

Képesség 2026-05-01-preview 2026-08-01-preview
Fájlok maximális száma tudásbázisonként 100 200
Maximális fájlméret 50 MB az összes támogatott tarifacsomagon 50 MB ingyenesen és alapszintűen; 100 MB más támogatott dedikált szinteken és kiszolgáló nélküli eszközökön
Feldolgozási időtartam A feltöltés akár 180 másodpercig is futtatható A feltöltés és a frissítés akár 180 másodpercig is futtatható
Tartalom és metaadatok feltöltése Nyers fájltartalom Nyers fájltartalom vagy többrészes tartalom metaadatokkal
Feltöltött fájlok listázása Fájlok listázása Szűrés elérési út vagy fájlnév alapján, és részletesebb fájladatokat ad vissza
Meglévő fájltartalom cseréje Törlés és újrafeltöltés Frissítési művelet használata
A fájlműveletekhez való böngészőhozzáférés A CORS nem érhető el A CORS konfigurálása

Note

  • A létrehozott keresési index tárolja a feltöltött tartalmat. A teljes tárterületkorlátot tarifacsomag szerint a szolgáltatási korlátok között tekintheti meg.
  • Ha a fájlismereti forrást úgy konfigurálja, hogy a feltöltött tartalmat darabolja vagy vektorizálja, a modell és az alsóbb réteg feldolgozási korlátai is érvényesek.

Meglévő tudásbázisok keresése

A tudásbázis egy legfelső szintű, újrafelhasználható objektum. A meglévő tudásbázisok ismerete hasznos lehet az új objektumok újbóli felhasználásához vagy elnevezéséhez.

Futtassa az alábbi kódot a tudásbázisok név és típus szerinti listázásához.

// List knowledge sources by name and type
using Azure.Search.Documents.Indexes;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
var knowledgeSources = indexClient.GetKnowledgeSourcesAsync();

Console.WriteLine("Knowledge Sources:");

await foreach (var ks in knowledgeSources)
{
    Console.WriteLine($"  Name: {ks.Name}, Type: {ks.GetType().Name}");
}

Referencia:SearchIndexClient

# List knowledge sources by name and type
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))

for ks in index_client.list_knowledge_sources():
    print(f"  - {ks.name} ({ks.kind})")

Referencia:SearchIndexClient

### List knowledge sources by name and type
GET {{search-url}}/knowledgesources?api-version={{api-version}}&$select=name,kind
Authorization: Bearer {{token}}

Referencia:Tudásbázisok – Lista

A JSON-definíció áttekintéséhez lekérdezhet egyetlen tudásforrást a név megadásával.

using Azure.Search.Documents.Indexes;
using System.Text.Json;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);

// Specify the knowledge source name to retrieve
string ksNameToGet = "earth-knowledge-source";

// Get its definition
var knowledgeSourceResponse = await indexClient.GetKnowledgeSourceAsync(ksNameToGet);
var ks = knowledgeSourceResponse.Value;

// Serialize to JSON for display
var jsonOptions = new JsonSerializerOptions 
{ 
    WriteIndented = true,
    DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.Never
};
Console.WriteLine(JsonSerializer.Serialize(ks, ks.GetType(), jsonOptions));

Referencia:SearchIndexClient

# Get a knowledge source definition
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
import json

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))

ks = index_client.get_knowledge_source("knowledge_source_name")
print(json.dumps(ks.as_dict(), indent = 2))

Referencia:SearchIndexClient

### Get a knowledge source definition
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version={{api-version}}
Authorization: Bearer {{token}}

Referencia:Tudásforrások – Get

Az alábbi JSON egy példaválasz egy fájlismereti forráshoz.

{
  "name": "my-file-ks",
  "kind": "file",
  "description": "A sample file knowledge source.",
  "encryptionKey": null,
  "fileParameters": {
    "ingestionParameters": {
      "contentExtractionMode": "minimal",
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<REDACTED>",
          "deploymentId": "text-embedding-3-large",
          "modelName": "text-embedding-3-large"
        }
      }
    }
  }
}

Tudásbázis létrehozása

Hozzon létre egy fájlismereti forrást, amely meghatározza a feltöltött tartalom vektorizálásához használt beágyazási modellt.

Minden fájlismereti forrás létrehoz egy indexet, de nem indexelőt vagy ütemezést. Tartalmaznia kell az fileParameters.ingestionParameters objektumot. A szolgáltatás elutasítja a megadott networkAccessModekéréseket.

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

var embeddingParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri(aoaiEndpoint),
    DeploymentName = aoaiEmbeddingDeployment,
    ModelName = aoaiEmbeddingModel
};

var ingestionParams = new KnowledgeSourceIngestionParameters
{
    ContentExtractionMode = "minimal",
    EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
    {
        AzureOpenAIParameters = embeddingParams
    }
};

var fileParams = new FileKnowledgeSourceParameters
{
    IngestionParameters = ingestionParams
};

var knowledgeSource = new FileKnowledgeSource(
    name: "my-file-ks",
    fileParameters: fileParams
)
{
    Description = "This knowledge source uses directly uploaded product manuals."
};

await indexClient.CreateOrUpdateKnowledgeSourceAsync(knowledgeSource);
Console.WriteLine($"Knowledge source '{knowledgeSource.Name}' created or updated successfully.");

Referencia:SearchIndexClient

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    AzureOpenAIVectorizerParameters,
    FileKnowledgeSource,
    FileKnowledgeSourceParameters,
)
from azure.search.documents.knowledgebases.models import (
    KnowledgeSourceAzureOpenAIVectorizer,
    KnowledgeSourceIngestionParameters,
)

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

embedding_params = AzureOpenAIVectorizerParameters(
    resource_url="<aoai-endpoint>",
    deployment_name="<aoai-embedding-deployment>",
    model_name="<aoai-embedding-model>",
)

ingestion_params = KnowledgeSourceIngestionParameters(
    content_extraction_mode="minimal",
    embedding_model=KnowledgeSourceAzureOpenAIVectorizer(
        azure_open_ai_parameters=embedding_params
    ),
)

knowledge_source = FileKnowledgeSource(
    name="my-file-ks",
    description="This knowledge source uses directly uploaded product manuals.",
    file_parameters=FileKnowledgeSourceParameters(ingestion_parameters=ingestion_params),
)

index_client.create_or_update_knowledge_source(knowledge_source=knowledge_source)
print(f"Knowledge source '{knowledge_source.name}' created or updated successfully.")

Referencia:SearchIndexClient

PUT {{search-endpoint}}/knowledgesources/my-file-ks?api-version=2026-08-01-preview
Authorization: Bearer {{search-access-token}}
Content-Type: application/json
Prefer: return=representation

{
  "name": "my-file-ks",
  "kind": "file",
  "description": "This knowledge source uses directly uploaded product manuals.",
  "encryptionKey": null,
  "fileParameters": {
    "ingestionParameters": {
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "{{aoai-endpoint}}",
          "deploymentId": "{{aoai-embedding-deployment}}",
          "modelName": "{{aoai-embedding-model}}"
        }
      },
      "contentExtractionMode": "minimal"
    }
  }
}

Referencia:Tudásforrások – Létrehozás vagy frissítés

Szabványos kinyerés konfigurálása

A standard API-verziótól kezdve a 2026-08-01-preview-kinyerés a Content Understanding segítségével kinyeri, szemantikai egységekre bontja és gazdagítja a feltöltött fájlokat. Azure AI Keresés ezt a feldolgozást a tudásbázis részeként kezeli, és a Tartalomértés díjai külön-külön érvényesek.

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

var embeddingParameters = new AzureOpenAIVectorizerParameters
{
  ResourceUri = new Uri(aoaiEndpoint),
  DeploymentName = aoaiEmbeddingDeployment,
  ModelName = aoaiEmbeddingModel
};

var ingestionParameters = new KnowledgeSourceIngestionParameters
{
  ContentExtractionMode = KnowledgeSourceContentExtractionMode.Standard,
  AiServices = new AIServices(new Uri(foundryEndpoint)) { ApiKey = foundryKey },
  EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
  {
    AzureOpenAIParameters = embeddingParameters
  },
  ChatCompletionModel = new KnowledgeBaseAzureOpenAIModel(
    new AzureOpenAIVectorizerParameters
    {
      ResourceUri = new Uri(aoaiEndpoint),
      DeploymentName = aoaiChatDeployment,
      ModelName = aoaiChatModel
    })
};

var knowledgeSource = new FileKnowledgeSource(
  "my-file-ks",
  new FileKnowledgeSourceParameters { IngestionParameters = ingestionParameters });

await indexClient.CreateOrUpdateKnowledgeSourceAsync(knowledgeSource);
Console.WriteLine($"Configured standard extraction for '{knowledgeSource.Name}'.");

Referencia:SearchIndexClient

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
  AzureOpenAIVectorizerParameters,
  FileKnowledgeSource,
  FileKnowledgeSourceParameters,
  KnowledgeBaseAzureOpenAIModel,
)
from azure.search.documents.knowledgebases.models import (
  AIServices,
  KnowledgeSourceAzureOpenAIVectorizer,
  KnowledgeSourceIngestionParameters,
)

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

embedding_parameters = AzureOpenAIVectorizerParameters(
  resource_url="<aoai-endpoint>",
  deployment_name="<aoai-embedding-deployment>",
  model_name="<aoai-embedding-model>",
)
ingestion_parameters = KnowledgeSourceIngestionParameters(
  content_extraction_mode="standard",
  ai_services=AIServices(
    uri="<foundry-resource-endpoint>",
    api_key="<foundry-resource-key>",
  ),
  embedding_model=KnowledgeSourceAzureOpenAIVectorizer(
    azure_open_ai_parameters=embedding_parameters
  ),
  chat_completion_model=KnowledgeBaseAzureOpenAIModel(
    azure_open_ai_parameters=AzureOpenAIVectorizerParameters(
      resource_url="<aoai-endpoint>",
      deployment_name="<aoai-gpt-deployment>",
      model_name="<aoai-gpt-model>",
    )
  ),
)
knowledge_source = FileKnowledgeSource(
  name="my-file-ks",
  file_parameters=FileKnowledgeSourceParameters(
    ingestion_parameters=ingestion_parameters
  ),
)

index_client.create_or_update_knowledge_source(knowledge_source)
print(f"Configured standard extraction for '{knowledge_source.name}'.")

Referencia:SearchIndexClient

PUT {{search-endpoint}}/knowledgesources/my-file-ks?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}
Prefer: return=representation

{
  "name": "my-file-ks",
  "kind": "file",
  "description": "This knowledge source uses standard extraction.",
  "fileParameters": {
    "ingestionParameters": {
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "{{aoai-endpoint}}",
          "deploymentId": "{{aoai-embedding-deployment}}",
          "modelName": "{{aoai-embedding-model}}"
        }
      },
      "chatCompletionModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "{{aoai-endpoint}}",
          "deploymentId": "{{aoai-gpt-deployment}}",
          "modelName": "{{aoai-gpt-model}}"
        }
      },
      "contentExtractionMode": "standard",
      "aiServices": {
        "uri": "{{foundry-resource-endpoint}}",
        "apiKey": "{{foundry-resource-key}}"
      }
    }
  }
}

Referencia:Tudásforrások – Létrehozás vagy frissítés

CORS fájlműveletekhez

A böngészőalapú fájlműveletek engedélyezéséhez állítsa be a fájlalapú tudásforráson a corsOptions értéket az alkalmazáshoz tartozó megbízható eredetekkel és a preflight gyorsítótárazás maximális időtartamával.

Important

Az API-verzióban a 2026-08-01-preview fájlfeltöltésre, corsOptions a listára, a frissítésre és a végpontok törlésére vonatkozik a kinyerési módtól függetlenül. Ha kihagyja corsOptions, a fájlismereti forrás nem rendelkezik böngészőközi házirenddel. A CORS nem engedélyezi a kéréseket. A forrásadatok engedélyezésével a szolgáltatásműveleteket és az adatokat böngészőkörnyezetben teheti elérhetővé, és biztonsági kockázatokat okozhat. Csak megbízható eredeteket adjon meg, és ne használjon helyettesítő karakteres eredetet éles környezetben. Böngészőkérések esetén használja Microsoft Entra jogkivonat-hitelesítést a minimálisan szükséges szerepkörrel. Soha ne tegye elérhetővé a hozzáférési jogkivonatokat vagy a szolgáltatáskulcsokat a böngészőkódban.

Fájlok feltöltése

A tudásbázis létrehozása után közvetlenül töltse fel a fájlokat. Minden feltöltés egy szinkron hívás: Azure AI Keresés kinyeri a tartalmat, darabkázza, szükség esetén beágyazásokat hoz létre, indexeli az adattömböket, és megőrzi a fájl metaadatait a hívás visszatérése előtt. Nem kell külön betöltési folyamatot konfigurálnia vagy futtatnia.

A fájlok feltöltésével és kezelésével kapcsolatos hibákkal kapcsolatos segítségért tekintse meg a fájlműveletek hibaelhárítását.

Raw fájl feltöltése

Nyers feltöltés esetén a felsorolt fileName a Content-Disposition: attachment; filename="..." fejlécből származik. A REST-hívások és a .NET SDK közvetlenül állítja be ezt a fejlécet, míg a Python SDK elfogad egy filename paramétert, és automatikusan létrehozza a fejlécet. Ha nem ad meg fájlnevet, a szolgáltatás automatikusan generált fileNamenevet rendel hozzá.

A fájlnevek tartalmazhatnak relatív elérési utat, például manuals/installation-guide.pdf. A szolgáltatás a visszaperjeleket perjelekké normalizálja. Elutasítja az abszolút elérési utakat, üres elérési utakat vagy .. szegmenseket., kettőspontot tartalmazó szegmenseket és érvénytelen HTTP-állapotú 400fájlnév karaktereket.

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

string fileName = "installation-guide.pdf";
byte[] fileBytes = await File.ReadAllBytesAsync(fileName);
string contentDisposition = $"attachment; filename=\"{fileName}\"";

KnowledgeSourceFile uploadedFile = (await indexClient.UploadKnowledgeSourceFileAsync(
    "my-file-ks",
    contentDisposition,
    BinaryData.FromBytes(fileBytes))).Value;

Console.WriteLine($"Uploaded file ID: {uploadedFile.FileId}");

Referencia:SearchIndexClient.UploadKnowledgeSourceFileAsync

from pathlib import Path

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

file_path = Path("installation-guide.pdf")
uploaded_file = index_client.upload_knowledge_source_file(
    "my-file-ks",
    file_path.read_bytes(),
    filename=file_path.name,
)
print(f"Uploaded file ID: {uploaded_file.file_id}")

Hivatkozás:SearchIndexClient.upload_knowledge_source_file

POST {{search-endpoint}}/knowledgesources/my-file-ks/files?api-version=2026-08-01-preview
Authorization: Bearer {{search-access-token}}
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="installation-guide.pdf"

<binary file content>

Referencia:Tudásforrások – Fájl feltöltése

Fájl feltöltése választható metaadatokkal

Az API-verziótól 2026-08-01-preview kezdve használjon többrészes kérést egy bináris fájl feltöltéséhez opcionális egyéni metaadatokkal. A kérelem pontosan egy content részt és egy opcionális JSON-részt metadata tartalmaz.

Ha mindkét név meg van adva, metadata.fileName elsőbbséget élvez a fájlnévvel szemben.content Ha egyik sincs megadva, a szolgáltatás automatikusan létrehozott fájlnevet rendel hozzá.

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
var metadata = new FileUploadMetadata
{
  FileName = "installation-guide.pdf",
  Metadata =
  {
    ["department"] = "support",
    ["product"] = "contoso-100"
  }
};

#pragma warning disable SCME0004
var request = new UploadKnowledgeSourceFileMultipartRequest(
  metadata,
  "installation-guide.pdf");
KnowledgeSourceFile uploadedFile = (await indexClient
  .UploadKnowledgeSourceFileMultipartAsync("my-file-ks", request)).Value;
#pragma warning restore SCME0004

Console.WriteLine($"Uploaded file ID: {uploadedFile.FileId}");

Hivatkozás:SearchIndexClient.UploadKnowledgeSourceFileMultipartAsync

from pathlib import Path

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
  FileUploadMetadata,
  UploadKnowledgeSourceFileMultipartRequest,
)

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())
file_path = Path("installation-guide.pdf")
request = UploadKnowledgeSourceFileMultipartRequest(
  metadata=FileUploadMetadata(
    file_name=file_path.name,
    metadata={"department": "support", "product": "contoso-100"},
  ),
  content=(file_path.name, file_path.read_bytes(), "application/pdf"),
)

uploaded_file = index_client.upload_knowledge_source_file_multipart(
  name="my-file-ks",
  body=request,
)
print(f"Uploaded file ID: {uploaded_file.file_id}")

Hivatkozás:SearchIndexClient.upload_knowledge_source_file_multipart

POST {{search-endpoint}}/knowledgesources('my-file-ks')/files?api-version=2026-08-01-preview
Authorization: Bearer {{search-access-token}}
Content-Type: multipart/form-data; boundary=file-boundary

--file-boundary
Content-Disposition: form-data; name="metadata"
Content-Type: application/json

{
  "fileName": "installation-guide.pdf",
  "metadata": {
    "department": "support",
    "product": "contoso-100"
  }
}
--file-boundary
Content-Disposition: form-data; name="content"; filename="installation-guide.pdf"
Content-Type: application/octet-stream

< ./installation-guide.pdf
--file-boundary--

Referencia:Tudásforrások – Fájl feltöltése

Note

A fájl feltöltése nem helyettesíti a meglévő fájlokat, még akkor sem, ha ugyanazt fileNamehasználja újra. Minden sikeres feltöltés egy új fájlt hoz létre saját fileId-val, így a feltöltött fájlok listája több olyan bejegyzést is tartalmazhat, amelyek ugyanazon a fileName-n osztoznak.

Ezzel 2026-05-01-previewa beállítással cserélje le a tartalmat a korábbi fájl törlésével és a csere feltöltésével. A(z) 2026-08-01-preview használatával használja a frissítési műveletet.

Feltöltött fájlok listázása

Listázhatja a tudásbázis fájljait a feltöltött fájlkészlet vizsgálatához.

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

await foreach (KnowledgeSourceFile file in indexClient.GetKnowledgeSourceFilesAsync("my-file-ks"))
{
    Console.WriteLine($"{file.FileName} ({file.FileSizeBytes} bytes) error={file.ErrorMessage}");
}

Referencia:SearchIndexClient.GetKnowledgeSourceFilesAsync

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

for file in index_client.list_knowledge_source_files("my-file-ks"):
    print(f"{file.file_name} ({file.file_size_bytes} bytes) error={file.error_message}")

Hivatkozás:SearchIndexClient.list_knowledge_source_files

GET {{search-endpoint}}/knowledgesources/my-file-ks/files?api-version=2026-08-01-preview
Authorization: Bearer {{search-access-token}}

Referencia:Tudásforrások – Fájlok listázása

A válasz minden feltöltött fájl metaadatait tartalmazza. A sikeresen felsorolt fájlok errorMessage értéke : null.

{
  "value": [
    {
      "fileId": "file-abc123",
      "fileName": "installation-guide.pdf",
      "fileSizeBytes": 1048576,
      "createdAt": "2026-05-07T18:10:00Z",
      "lastUpdatedAt": "2026-05-07T18:14:00.803Z",
      "errorMessage": null
    }
  ]
}

Ha egy új feltöltés sikertelen, a kérés hibát ad vissza, és nem hoz létre fájl metaadatrekordot. A sikertelen feltöltés nem jelenik meg a későbbi listaeredményekben, és nincs számlázva.

Ha a modell hozzáférési hibája történik, és a beágyazási modellt üzemeltető Foundry-erőforrás privát hálózatkezelést használ, ellenőrizze, hogy a foundry_account megosztott privát kapcsolat engedélyezve van-e, és engedélyezve van-e a megbízható szolgáltatások megkerülése. A letiltott bypass a(z) 403 Public access is disabled értéket adja vissza. A beállítás részleteiért tekintse meg az előfeltételeket.

Fájlok listázása és szűrése

A 2026-08-01-preview API-verziótól kezdve használja a search elemet a fájlok relatív útvonal szerinti szűrésére, illetve a prefix elemet a fájlnév-előtag szerinti szűrésre. Állítsa be a(z) pageSize elemet az eredmények számának szabályozásához.

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

await foreach (KnowledgeSourceFile file in indexClient.GetKnowledgeSourceFilesAsync(
  "my-file-ks",
  prefix: "manuals/",
  pageSize: 100))
{
  Console.WriteLine($"{file.FileName} ({file.FileId})");
}

Referencia:SearchIndexClient.GetKnowledgeSourceFilesAsync

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

files = index_client.list_knowledge_source_files(
  "my-file-ks",
  prefix="manuals/",
  page_size=100,
)
for file in files:
  print(f"{file.file_name} ({file.file_id})")

Hivatkozás:SearchIndexClient.list_knowledge_source_files

GET {{search-endpoint}}/knowledgesources('my-file-ks')/files?api-version=2026-08-01-preview&prefix=manuals/&pageSize=100
Authorization: Bearer {{search-access-token}}

Referencia:Tudásforrások – Fájlok listázása

A válasz tartalmazza a szolgáltatás által kiválasztott elemzési és kinyerési módokat, valamint a fájlkezelés felhasználói metaadatait. A felhasználói metaadatok nem kereshetők és nem szűrhetők.

{
  "value": [
    {
      "fileId": "file-abc123",
      "fileName": "manuals/installation-guide.md",
      "prefix": "manuals/",
      "metadata": {
        "department": "support",
        "product": "contoso-100"
      },
      "parsingMode": "markdown",
      "extractionMode": "minimal",
      "fileSizeBytes": 1048576,
      "createdAt": "2026-08-03T18:10:00Z",
      "lastUpdatedAt": "2026-08-03T18:14:00Z",
      "errorMessage": null
    }
  ],
  "@odata.nextLink": "<service-generated continuation URL>"
}

Az összes eredmény lekéréséhez kövesse a(z) @odata.nextLink elemet, amíg az el nem tűnik. Küldje el a teljes URL-címet pontosan a visszaadott módon, a lekérdezési paraméterek módosítása nélkül.

Feltöltött fájl frissítése

A 2026-08-01-preview API-verziótól kezdve frissítsen egy fájlt a fileId alapján. A többrészes kérelemhez a bináris content rész szükséges. A metaadatok JSON-része nem kötelező, ezért a csak tartalommal rendelkező frissítés támogatott. A csak metaadat-alapú frissítések nem támogatottak.

using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
var metadata = new FileUploadMetadata
{
  FileName = "installation-guide.pdf",
  Metadata =
  {
    ["department"] = "support",
    ["product"] = "contoso-200"
  }
};

#pragma warning disable SCME0004
var request = new UpdateKnowledgeSourceFileRequest(
  metadata,
  "installation-guide.pdf");
KnowledgeSourceFile updatedFile = (await indexClient.UpdateKnowledgeSourceFileAsync(
  fileId,
  "my-file-ks",
  request)).Value;
#pragma warning restore SCME0004

Console.WriteLine($"Updated file ID: {updatedFile.FileId}");

Referencia:SearchIndexClient.UpdateKnowledgeSourceFileAsync

from pathlib import Path

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
  FileUploadMetadata,
  UpdateKnowledgeSourceFileRequest,
)

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())
file_path = Path("installation-guide.pdf")
request = UpdateKnowledgeSourceFileRequest(
  metadata=FileUploadMetadata(
    file_name=file_path.name,
    metadata={"department": "support", "product": "contoso-200"},
  ),
  content=(file_path.name, file_path.read_bytes(), "application/pdf"),
)

updated_file = index_client.update_knowledge_source_file(
  name="my-file-ks",
  file_id=file_id,
  body=request,
)
print(f"Updated file ID: {updated_file.file_id}")

Hivatkozás:SearchIndexClient.update_knowledge_source_file

PUT {{search-endpoint}}/knowledgesources('my-file-ks')/files('{{file-id}}')?api-version=2026-08-01-preview
Authorization: Bearer {{search-access-token}}
Content-Type: multipart/form-data; boundary=file-boundary

--file-boundary
Content-Disposition: form-data; name="metadata"
Content-Type: application/json

{
  "fileName": "installation-guide.pdf",
  "metadata": {
    "department": "support",
    "product": "contoso-200"
  }
}
--file-boundary
Content-Disposition: form-data; name="content"; filename="installation-guide.pdf"
Content-Type: application/octet-stream

< ./installation-guide.pdf
--file-boundary--

Referencia:Tudásforrások – Fájl frissítése

Ha egy frissítés meghiúsul, az előző metaadatrekord megmarad. Ne feltételezzük, hogy egy frissítés tranzakciósan módosítja az indexelt tartalmat.

Feltöltött fájlok törlése

Törölje a fájlokat a tudásbázisból, ha már nem szeretné, hogy azok lekérésre elérhetők legyenek.

using Azure.Identity;
using Azure.Search.Documents.Indexes;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

await indexClient.DeleteKnowledgeSourceFileAsync("my-file-ks", "file-abc123");

Referencia:SearchIndexClient.DeleteKnowledgeSourceFileAsync

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

index_client.delete_knowledge_source_file("my-file-ks", "file-abc123")

Hivatkozás:SearchIndexClient.delete_knowledge_source_file

DELETE {{search-endpoint}}/knowledgesources/my-file-ks/files/file-abc123?api-version=2026-08-01-preview
Authorization: Bearer {{search-access-token}}

Referencia:Tudásforrások – Fájl törlése

Hozzárendelés tudásbázishoz

Ha elégedett a tudásbázissal, adja hozzá egy tudásbázishoz.

Tudásbázis lekérdezése

A tudásbázis konfigurálása után hívja meg a lekérési műveletet vagy az MCP-végpontot a tudásbázis lekérdezéséhez.

Tudásbázis törlése

Mielőtt törölhet egy tudásbázist, törölnie kell minden olyan tudásbázist, amely hivatkozik rá, vagy frissítenie kell a tudásbázis definícióját a hivatkozás eltávolításához. Az index- és indexelőfolyamatot létrehozó tudásbázisok esetében a rendszer az összes létrehozott objektumot is törli. Ha azonban egy meglévő indexet használt egy tudásbázis létrehozásához, az index nem törlődik.

Ha egy használatban lévő tudásbázist próbál törölni, a művelet meghiúsul, és visszaadja az érintett tudásbázisok listáját.

Tudásbázis törlése:

  1. Szerezze be a keresési szolgáltatás összes tudásbázisának listáját.

    using Azure.Search.Documents.Indexes;
    
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
    var knowledgeBases = indexClient.GetKnowledgeBasesAsync();
    
    Console.WriteLine("Knowledge Bases:");
    
    await foreach (var kb in knowledgeBases)
    {
        Console.WriteLine($"  - {kb.Name}");
    }
    

    Referencia:SearchIndexClient

    Egy példaválasz az alábbihoz hasonlóan nézhet ki:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Szerezze be az egyéni tudásbázisdefiníciót a tudásbázishivatkozások kereséséhez.

    using Azure.Search.Documents.Indexes;
    using System.Text.Json;
    
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
    
    // Specify the knowledge base name to retrieve
    string kbNameToGet = "earth-knowledge-base";
    
    // Get a specific knowledge base definition
    var knowledgeBaseResponse = await indexClient.GetKnowledgeBaseAsync(kbNameToGet);
    var kb = knowledgeBaseResponse.Value;
    
    // Serialize to JSON for display
    string json = JsonSerializer.Serialize(kb, new JsonSerializerOptions { WriteIndented = true });
    Console.WriteLine(json);
    

    Referencia:SearchIndexClient

    Egy példaválasz az alábbihoz hasonlóan nézhet ki:

     {
       "Name": "earth-knowledge-base",
       "KnowledgeSources": [
         {
           "Name": "earth-knowledge-source"
         }
       ],
       "Models": [
         {}
       ],
       "RetrievalReasoningEffort": {},
       "OutputMode": {},
       "ETag": "\u00220x8DE278629D782B3\u0022",
       "EncryptionKey": null,
       "Description": null,
       "RetrievalInstructions": null,
       "AnswerInstructions": null
     }
    
  3. Törölje a tudásbázist, vagy ha több tudásbázist használ, frissítse a tudásbázist a forrás eltávolításához. Ez a példa a törlést mutatja be.

    using Azure.Search.Documents.Indexes;
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
    
    await indexClient.DeleteKnowledgeBaseAsync(knowledgeBaseName);
    System.Console.WriteLine($"Knowledge base '{knowledgeBaseName}' deleted successfully.");
    

    Referencia:SearchIndexClient

  4. Törölje a tudásbázist.

    await indexClient.DeleteKnowledgeSourceAsync(knowledgeSourceName);
    System.Console.WriteLine($"Knowledge source '{knowledgeSourceName}' deleted successfully.");
    

    Referencia:SearchIndexClient

  1. Szerezze be a keresési szolgáltatás összes tudásbázisának listáját.

    # Get knowledge bases
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    
    print("Knowledge Bases:")
    for kb in index_client.list_knowledge_bases():
        print(f"  - {kb.name}")
    

    Referencia:SearchIndexClient

    Egy példaválasz az alábbihoz hasonlóan nézhet ki:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Szerezze be az egyéni tudásbázisdefiníciót a tudásbázishivatkozások kereséséhez.

    # Get a knowledge base definition
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    kb = index_client.get_knowledge_base("knowledge_base_name")
    print(kb)
    

    Referencia:SearchIndexClient

    Egy példaválasz az alábbihoz hasonlóan nézhet ki:

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks"
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Törölje a tudásbázist, vagy ha több tudásbázist használ, frissítse a tudásbázist a forrás eltávolításához. Ez a példa a törlést mutatja be.

    # Delete a knowledge base
    from azure.core.credentials import AzureKeyCredential 
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    index_client.delete_knowledge_base("knowledge_base_name")
    print(f"Knowledge base deleted successfully.")
    

    Referencia:SearchIndexClient

  4. Törölje a tudásbázist.

    # Delete a knowledge source
    from azure.core.credentials import AzureKeyCredential 
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    index_client.delete_knowledge_source("knowledge_source_name")
    print(f"Knowledge source deleted successfully.")
    

    Referencia:SearchIndexClient

  1. Szerezze be a keresési szolgáltatás összes tudásbázisának listáját.

    ### Get knowledge bases
    GET {{search-url}}/knowledgebases?api-version={{api-version}}&$select=name
    Authorization: Bearer {{token}}
    

    Referencia:Tudásbázisok – Lista

    Egy példaválasz az alábbihoz hasonlóan nézhet ki:

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. Szerezze be az egyéni tudásbázisdefiníciót a tudásbázishivatkozások kereséséhez.

    ### Get a knowledge base definition
    GET {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
    Authorization: Bearer {{token}}
    

    Referencia:Tudásbázisok – Get

    Egy példaválasz az alábbihoz hasonlóan nézhet ki:

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks"
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. Törölje a tudásbázist, vagy ha több tudásbázist használ, frissítse a tudásbázist a forrás eltávolításához. Ez a példa a törlést mutatja be.

    ### Delete a knowledge base
    DELETE {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
    Authorization: Bearer {{token}}
    

    Referencia:Tudásbázisok – Törlés

  4. Törölje a tudásbázist.

    ### Delete a knowledge source
    DELETE {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version={{api-version}}
    Authorization: Bearer {{token}}
    

    Referencia:Tudásforrások – Törlés

Fájlműveletek hibaelhárítása

Az alábbi állapotkódok a tudásbázisfájl-műveletekre vonatkoznak.

Állapotkód Ok és művelet
400 A fájl üres, nem tartalmaz kinyerhető szöveget, nem biztonságos relatív elérési út van, vagy érvénytelen folytatási kérelemmel rendelkezik. Ellenőrizze, hogy a fájl támogatott, olvasható tartalommal és érvényes fájlnévvel rendelkezik-e. Listaműveletek esetén pontosan kövesse a visszaadott @odata.nextLink elemet. Ne kombinálja a(z) $skiptoken elemet a(z) pageSize vagy search elemmel.
409 A fájlismereti forrás elérte az API-verzió fájlkorlátját. Fájlok törlése további feltöltés előtt.
415 A szolgáltatás nem támogatott MIME-típust észlelt, vagy képet észlelt, miközben a tudásbázis minimális kinyerést használ. Használjon támogatott formátumot. Képek esetén használjon szabványos kinyerést. Ha csak a hívó által megadott tartalomtípust módosítja, az nem bírálja felül az észlelést.
429 A feldolgozási üzenetsor megtelt. Használjon határolt párhuzamosságot, és próbálkozzon újra exponenciális visszalépéssel. A szolgáltatás nem garantálja a Retry-After fejlécet.
504 A feldolgozás meghaladta a 180 másodpercet a fájlfeltöltés vagy -frissítés során. Csökkentse a fájl méretét vagy összetettségét, és próbálkozzon újra.