Cortex 文档已覆盖 Parse、Storage、Knowledge、Evaluation 与 Synthesis。查看 最新变更

Knowledge Quickstart 快速上手

创建数据集,摄入内联文本,构建图谱感知知识,并执行搜索。

这个快速上手从内联文本构建一个很小的知识库,不依赖外网和 Storage 对象。下面的 API 片段是 AI 生成的 Python、JavaScript 和 Java 客户端示例。

1. 创建数据集

import osimport requestsBASE_URL = os.getenv("CORTEX_URL", "http://127.0.0.1:8080")TOKEN = os.getenv("CORTEX_TOKEN", "replace_with_token")def auth_headers():    return {"Authorization": f"Bearer {TOKEN}"}payload = {  "dataset_key": "quickstart_knowledge_demo",  "display_name": "Quickstart Knowledge Demo",  "description": "Small Cortex Knowledge dataset",  "tags": [    "quickstart",    "knowledge"  ],  "retention_class": "temporary",  "access_policy": {    "access_level": "tenant_shared"  }}response = requests.post(    f"{BASE_URL}/v1/knowledge/datasets",    headers={**auth_headers(), "Content-Type": "application/json"},    json=payload,)response.raise_for_status()data = response.json()print(data)
const BASE_URL = process.env.CORTEX_URL ?? "http://127.0.0.1:8080";const TOKEN = process.env.CORTEX_TOKEN ?? "replace_with_token";const authHeaders = {  Authorization: `Bearer ${TOKEN}`,};const payload = {  "dataset_key": "quickstart_knowledge_demo",  "display_name": "Quickstart Knowledge Demo",  "description": "Small Cortex Knowledge dataset",  "tags": [    "quickstart",    "knowledge"  ],  "retention_class": "temporary",  "access_policy": {    "access_level": "tenant_shared"  }};const response = await fetch(`${BASE_URL}/v1/knowledge/datasets`, {  method: "POST",  headers: { ...authHeaders, "Content-Type": "application/json" },  body: JSON.stringify(payload),});if (!response.ok) throw new Error(await response.text());const data = await response.json();console.log(data);
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;public class CortexExample {  static final String BASE_URL = System.getenv().getOrDefault("CORTEX_URL", "http://127.0.0.1:8080");  static final String TOKEN = System.getenv().getOrDefault("CORTEX_TOKEN", "replace_with_token");  static final HttpClient HTTP = HttpClient.newHttpClient();  static void print(HttpResponse<String> response) {    System.out.println(response.statusCode());    System.out.println(response.body());  }  public static void main(String[] args) throws Exception {    String json = """      {        \"dataset_key\": \"quickstart_knowledge_demo\",        \"display_name\": \"Quickstart Knowledge Demo\",        \"description\": \"Small Cortex Knowledge dataset\",        \"tags\": [          \"quickstart\",          \"knowledge\"        ],        \"retention_class\": \"temporary\",        \"access_policy\": {          \"access_level\": \"tenant_shared\"        }      }      """;    HttpRequest request = HttpRequest.newBuilder()      .uri(URI.create(BASE_URL + "/v1/knowledge/datasets"))      .header("Authorization", "Bearer " + TOKEN)      .header("Content-Type", "application/json")      .POST(HttpRequest.BodyPublishers.ofString(json))      .build();    print(HTTP.send(request, HttpResponse.BodyHandlers.ofString()));  }}

2. 摄入内联文本

import osimport requestsBASE_URL = os.getenv("CORTEX_URL", "http://127.0.0.1:8080")TOKEN = os.getenv("CORTEX_TOKEN", "replace_with_token")def auth_headers():    return {"Authorization": f"Bearer {TOKEN}"}payload = {  "dataset_key": "quickstart_knowledge_demo",  "inputs": [    {      "input_type": "text",      "text": "# Cortex APIs\nCortex provides Parse, Storage, Knowledge, Evaluation, and Synthesis APIs.",      "label": "Cortex API note",      "node_set": [        "quickstart",        "docs"      ],      "metadata": {        "source": "manual",        "document_type": "note"      }    }  ],  "options": {    "normalize_text": True,    "structured_ingest": True,    "incremental": True,    "persist_source_copy": False  }}response = requests.post(    f"{BASE_URL}/v1/knowledge/add/jobs",    headers={**auth_headers(), "Content-Type": "application/json"},    json=payload,)response.raise_for_status()data = response.json()print(data)
const BASE_URL = process.env.CORTEX_URL ?? "http://127.0.0.1:8080";const TOKEN = process.env.CORTEX_TOKEN ?? "replace_with_token";const authHeaders = {  Authorization: `Bearer ${TOKEN}`,};const payload = {  "dataset_key": "quickstart_knowledge_demo",  "inputs": [    {      "input_type": "text",      "text": "# Cortex APIs\nCortex provides Parse, Storage, Knowledge, Evaluation, and Synthesis APIs.",      "label": "Cortex API note",      "node_set": [        "quickstart",        "docs"      ],      "metadata": {        "source": "manual",        "document_type": "note"      }    }  ],  "options": {    "normalize_text": true,    "structured_ingest": true,    "incremental": true,    "persist_source_copy": false  }};const response = await fetch(`${BASE_URL}/v1/knowledge/add/jobs`, {  method: "POST",  headers: { ...authHeaders, "Content-Type": "application/json" },  body: JSON.stringify(payload),});if (!response.ok) throw new Error(await response.text());const data = await response.json();console.log(data);
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;public class CortexExample {  static final String BASE_URL = System.getenv().getOrDefault("CORTEX_URL", "http://127.0.0.1:8080");  static final String TOKEN = System.getenv().getOrDefault("CORTEX_TOKEN", "replace_with_token");  static final HttpClient HTTP = HttpClient.newHttpClient();  static void print(HttpResponse<String> response) {    System.out.println(response.statusCode());    System.out.println(response.body());  }  public static void main(String[] args) throws Exception {    String json = """      {        \"dataset_key\": \"quickstart_knowledge_demo\",        \"inputs\": [          {            \"input_type\": \"text\",            \"text\": \"# Cortex APIs\\nCortex provides Parse, Storage, Knowledge, Evaluation, and Synthesis APIs.\",            \"label\": \"Cortex API note\",            \"node_set\": [              \"quickstart\",              \"docs\"            ],            \"metadata\": {              \"source\": \"manual\",              \"document_type\": \"note\"            }          }        ],        \"options\": {          \"normalize_text\": true,          \"structured_ingest\": true,          \"incremental\": true,          \"persist_source_copy\": false        }      }      """;    HttpRequest request = HttpRequest.newBuilder()      .uri(URI.create(BASE_URL + "/v1/knowledge/add/jobs"))      .header("Authorization", "Bearer " + TOKEN)      .header("Content-Type", "application/json")      .POST(HttpRequest.BodyPublishers.ofString(json))      .build();    print(HTTP.send(request, HttpResponse.BodyHandlers.ofString()));  }}

轮询 job 直到成功:

import osimport requestsBASE_URL = os.getenv("CORTEX_URL", "http://127.0.0.1:8080")TOKEN = os.getenv("CORTEX_TOKEN", "replace_with_token")def auth_headers():    return {"Authorization": f"Bearer {TOKEN}"}response = requests.get(f"{BASE_URL}/v1/jobs/job_xxx", headers=auth_headers())response.raise_for_status()data = response.json()print(data)
const BASE_URL = process.env.CORTEX_URL ?? "http://127.0.0.1:8080";const TOKEN = process.env.CORTEX_TOKEN ?? "replace_with_token";const authHeaders = {  Authorization: `Bearer ${TOKEN}`,};const response = await fetch(`${BASE_URL}/v1/jobs/job_xxx`, {  headers: authHeaders,});if (!response.ok) throw new Error(await response.text());const data = await response.json();console.log(data);
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;public class CortexExample {  static final String BASE_URL = System.getenv().getOrDefault("CORTEX_URL", "http://127.0.0.1:8080");  static final String TOKEN = System.getenv().getOrDefault("CORTEX_TOKEN", "replace_with_token");  static final HttpClient HTTP = HttpClient.newHttpClient();  static void print(HttpResponse<String> response) {    System.out.println(response.statusCode());    System.out.println(response.body());  }  public static void main(String[] args) throws Exception {    HttpRequest request = HttpRequest.newBuilder()      .uri(URI.create(BASE_URL + "/v1/jobs/job_xxx"))      .header("Authorization", "Bearer " + TOKEN)      .GET()      .build();    print(HTTP.send(request, HttpResponse.BodyHandlers.ofString()));  }}

3. Cognify 数据集

import osimport requestsBASE_URL = os.getenv("CORTEX_URL", "http://127.0.0.1:8080")TOKEN = os.getenv("CORTEX_TOKEN", "replace_with_token")def auth_headers():    return {"Authorization": f"Bearer {TOKEN}"}payload = {  "dataset_key": "quickstart_knowledge_demo",  "incremental_loading": True,  "graph_prompt_profile": "simple",  "chunking": {    "enabled": True,    "strategy": "semantic",    "target_tokens": 384,    "overlap_tokens": 48,    "max_chunks": 64  }}response = requests.post(    f"{BASE_URL}/v1/knowledge/cognify/jobs",    headers={**auth_headers(), "Content-Type": "application/json"},    json=payload,)response.raise_for_status()data = response.json()print(data)
const BASE_URL = process.env.CORTEX_URL ?? "http://127.0.0.1:8080";const TOKEN = process.env.CORTEX_TOKEN ?? "replace_with_token";const authHeaders = {  Authorization: `Bearer ${TOKEN}`,};const payload = {  "dataset_key": "quickstart_knowledge_demo",  "incremental_loading": true,  "graph_prompt_profile": "simple",  "chunking": {    "enabled": true,    "strategy": "semantic",    "target_tokens": 384,    "overlap_tokens": 48,    "max_chunks": 64  }};const response = await fetch(`${BASE_URL}/v1/knowledge/cognify/jobs`, {  method: "POST",  headers: { ...authHeaders, "Content-Type": "application/json" },  body: JSON.stringify(payload),});if (!response.ok) throw new Error(await response.text());const data = await response.json();console.log(data);
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;public class CortexExample {  static final String BASE_URL = System.getenv().getOrDefault("CORTEX_URL", "http://127.0.0.1:8080");  static final String TOKEN = System.getenv().getOrDefault("CORTEX_TOKEN", "replace_with_token");  static final HttpClient HTTP = HttpClient.newHttpClient();  static void print(HttpResponse<String> response) {    System.out.println(response.statusCode());    System.out.println(response.body());  }  public static void main(String[] args) throws Exception {    String json = """      {        \"dataset_key\": \"quickstart_knowledge_demo\",        \"incremental_loading\": true,        \"graph_prompt_profile\": \"simple\",        \"chunking\": {          \"enabled\": true,          \"strategy\": \"semantic\",          \"target_tokens\": 384,          \"overlap_tokens\": 48,          \"max_chunks\": 64        }      }      """;    HttpRequest request = HttpRequest.newBuilder()      .uri(URI.create(BASE_URL + "/v1/knowledge/cognify/jobs"))      .header("Authorization", "Bearer " + TOKEN)      .header("Content-Type", "application/json")      .POST(HttpRequest.BodyPublishers.ofString(json))      .build();    print(HTTP.send(request, HttpResponse.BodyHandlers.ofString()));  }}

4. 搜索

import osimport requestsBASE_URL = os.getenv("CORTEX_URL", "http://127.0.0.1:8080")TOKEN = os.getenv("CORTEX_TOKEN", "replace_with_token")def auth_headers():    return {"Authorization": f"Bearer {TOKEN}"}payload = {  "query_text": "What APIs does Cortex expose?",  "dataset_keys": [    "quickstart_knowledge_demo"  ],  "search_type": "GRAPH_COMPLETION",  "top_k": 5,  "only_context": False,  "include_provenance": True,  "include_graph_paths": True,  "timeout_seconds": 30}response = requests.post(    f"{BASE_URL}/v1/knowledge/search",    headers={**auth_headers(), "Content-Type": "application/json"},    json=payload,)response.raise_for_status()data = response.json()print(data)
const BASE_URL = process.env.CORTEX_URL ?? "http://127.0.0.1:8080";const TOKEN = process.env.CORTEX_TOKEN ?? "replace_with_token";const authHeaders = {  Authorization: `Bearer ${TOKEN}`,};const payload = {  "query_text": "What APIs does Cortex expose?",  "dataset_keys": [    "quickstart_knowledge_demo"  ],  "search_type": "GRAPH_COMPLETION",  "top_k": 5,  "only_context": false,  "include_provenance": true,  "include_graph_paths": true,  "timeout_seconds": 30};const response = await fetch(`${BASE_URL}/v1/knowledge/search`, {  method: "POST",  headers: { ...authHeaders, "Content-Type": "application/json" },  body: JSON.stringify(payload),});if (!response.ok) throw new Error(await response.text());const data = await response.json();console.log(data);
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;public class CortexExample {  static final String BASE_URL = System.getenv().getOrDefault("CORTEX_URL", "http://127.0.0.1:8080");  static final String TOKEN = System.getenv().getOrDefault("CORTEX_TOKEN", "replace_with_token");  static final HttpClient HTTP = HttpClient.newHttpClient();  static void print(HttpResponse<String> response) {    System.out.println(response.statusCode());    System.out.println(response.body());  }  public static void main(String[] args) throws Exception {    String json = """      {        \"query_text\": \"What APIs does Cortex expose?\",        \"dataset_keys\": [          \"quickstart_knowledge_demo\"        ],        \"search_type\": \"GRAPH_COMPLETION\",        \"top_k\": 5,        \"only_context\": false,        \"include_provenance\": true,        \"include_graph_paths\": true,        \"timeout_seconds\": 30      }      """;    HttpRequest request = HttpRequest.newBuilder()      .uri(URI.create(BASE_URL + "/v1/knowledge/search"))      .header("Authorization", "Bearer " + TOKEN)      .header("Content-Type", "application/json")      .POST(HttpRequest.BodyPublishers.ofString(json))      .build();    print(HTTP.send(request, HttpResponse.BodyHandlers.ofString()));  }}

本页目录