Skip to main content

zai_rs/knowledge/
mod.rs

1//! # Knowledge Base Module
2//!
3//! Provides comprehensive knowledge base management capabilities for the Zhipu
4//! AI API. Knowledge bases allow you to upload documents and use them as
5//! context for AI conversations.
6//!
7//! ## Module Components
8//!
9//! ### Knowledge Management
10//! - [`create`] - Create new knowledge bases
11//! - [`list`] - List existing knowledge bases
12//! - [`retrieve`] - Retrieve knowledge base details
13//! - [`update`] - Update knowledge base metadata
14//! - [`delete`] - Delete knowledge bases
15//! - [`capacity`] - Check knowledge base capacity and usage
16//!
17//! ### Document Management
18//! - [`document_upload_file`] - Upload documents from local files
19//! - [`document_upload_url`] - Upload documents from URLs
20//! - [`document_list`] - List documents in a knowledge base
21//! - [`document_retrieve`] - Retrieve document details
22//! - [`document_delete`] - Delete documents
23//! - [`document_image_list`] - List images in documents
24//! - [`document_reembedding`] - Re-embed documents
25//!
26//! ### Knowledge Retrieval
27//! - [`retrieve`] - Retrieve relevant content from knowledge base
28//!
29//! - [`types`] - Shared data types
30//!
31//! ## Supported Operations
32//!
33//! ### Create Knowledge Base
34//! ```rust,ignore
35//! use zai_rs::knowledge::{CreateKnowledgeRequest, CreateKnowledgeBody, KnowledgeIcon};
36//!
37//! let body = CreateKnowledgeBody {
38//!     name: "My Knowledge Base".to_string(),
39//!     description: Some("Documentation for my project".to_string()),
40//!     icon: KnowledgeIcon::Text,
41//!     background_color: None,
42//!     permission: None,
43//!     embedding_id: None,
44//! };
45//!
46//! let request = CreateKnowledgeRequest::new(body);
47//! let response = client.create_knowledge(&request).await?;
48//! ```
49//!
50//! ### Upload Document
51//! ```rust,ignore
52//! use zai_rs::knowledge::{DocumentUploadFileRequest, UploadFileOptions};
53//! use tokio::fs::File;
54//!
55//! let file = File::open("document.pdf").await?;
56//! let options = UploadFileOptions {
57//!     chunk_size: None,
58//!     slice_type: None,
59//! };
60//!
61//! let request = DocumentUploadFileRequest::new(knowledge_id, file, options);
62//! let response = client.upload_document(&request).await?;
63//! ```
64//!
65//! ### List Documents
66//! ```rust,ignore
67//! use zai_rs::knowledge::{DocumentListRequest, DocumentListQuery};
68//!
69//! let query = DocumentListQuery {
70//!     limit: Some(20),
71//!     page: Some(1),
72//! };
73//!
74//! let request = DocumentListRequest::new(knowledge_id, query);
75//! let response = client.list_documents(&request).await?;
76//! ```
77//!
78//! ### Delete Document
79//! ```rust,ignore
80//! use zai_rs::knowledge::{DocumentDeleteRequest, DocumentDeleteBody};
81//!
82//! let body = DocumentDeleteBody {
83//!     document_ids: vec!["doc_123".to_string(), "doc_456".to_string()],
84//! };
85//!
86//! let request = DocumentDeleteRequest::new(knowledge_id, body);
87//! let response = client.delete_documents(&request).await?;
88//! ```
89//!
90//! ### Retrieve Knowledge
91//! ```rust,ignore
92//! use zai_rs::knowledge::{KnowledgeRetrieveRequest, KnowledgeRetrieveBody};
93//!
94//! let body = KnowledgeRetrieveBody {
95//!     question: "How do I use the API?".to_string(),
96//!     top_k: Some(3),
97//! };
98//!
99//! let request = KnowledgeRetrieveRequest::new(knowledge_id, body);
100//! let response = client.retrieve_knowledge(&request).await?;
101//! ```
102//!
103//! ## Use Cases
104//!
105//! - **Document Q&A**: Upload documentation and ask questions about it
106//! - **Knowledge Search**: Search across multiple documents efficiently
107//! - **Context Enhancement**: Provide context to AI conversations
108//! - **Document Management**: Organize and manage document collections
109//!
110//! ## Supported Document Types
111//!
112//! - PDF documents
113//! - Plain text files
114//! - Markdown files
115//! - Word documents
116//! - HTML pages
117//!
118//! ## Knowledge Base Features
119//!
120//! - Automatic text extraction and segmentation
121//! - Vector embedding for semantic search
122//! - Re-embedding capability for updated documents
123//! - Image extraction from documents
124//! - Usage tracking and capacity management
125
126pub mod capacity;
127pub mod create;
128pub mod delete;
129pub mod document_delete;
130pub mod document_image_list;
131pub mod document_list;
132pub mod document_reembedding;
133pub mod document_retrieve;
134pub mod document_upload_file;
135pub mod document_upload_url;
136pub mod list;
137pub mod retrieve;
138pub mod types;
139pub mod update;
140
141pub use capacity::KnowledgeCapacityRequest;
142pub use create::{
143    BackgroundColor, CreateKnowledgeBody, CreateKnowledgeRequest, CreateKnowledgeResponse,
144    EmbeddingId, KnowledgeIcon,
145};
146pub use delete::{KnowledgeDeleteRequest, KnowledgeDeleteResponse};
147pub use document_delete::{DocumentDeleteRequest, DocumentDeleteResponse};
148pub use document_image_list::DocumentImageListRequest;
149pub use document_list::{DocumentListQuery, DocumentListRequest};
150pub use document_reembedding::{
151    DocumentReembeddingBody, DocumentReembeddingRequest, DocumentReembeddingResponse,
152};
153pub use document_retrieve::DocumentRetrieveRequest;
154pub use document_upload_file::{DocumentSliceType, DocumentUploadFileRequest, UploadFileOptions};
155pub use document_upload_url::{DocumentUploadUrlRequest, UploadUrlBody, UploadUrlDetail};
156pub use list::{KnowledgeListQuery, KnowledgeListRequest};
157pub use retrieve::{KnowledgeRetrieveRequest, KnowledgeRetrieveResponse};
158pub use types::{
159    DocumentDetailResponse, DocumentFailInfo, DocumentImageItem, DocumentImageListData,
160    DocumentImageListResponse, DocumentItem, DocumentListData, DocumentListResponse,
161    KnowledgeCapacityData, KnowledgeCapacityResponse, KnowledgeDetailResponse, KnowledgeItem,
162    KnowledgeListData, KnowledgeListResponse, KnowledgeUsageCounts, UploadFileData,
163    UploadFileFailedInfo, UploadFileResponse, UploadFileSuccessInfo, UploadUrlData,
164    UploadUrlFailedInfo, UploadUrlResponse, UploadUrlSuccessInfo,
165};
166pub use update::{KnowledgeUpdateRequest, KnowledgeUpdateResponse, UpdateKnowledgeBody};