# string.rag 库模块帮助文档

## string 成员列表 <a id="string" href="#string">&#x23;</a>

### string.rag() <a id="string.rag" href="#string.rag">&#x23;</a>
[返回对象:stringRagObject](#stringRagObject)

### string.rag(dbPath) <a id="string.rag" href="#string.rag">&#x23;</a>
创建 RAG 知识库实例。  
dbPath 指定数据库路径，默认为内存数据库。  
示例: string.rag("./knowledge.db")

## string.rag 成员列表 <a id="string.rag" href="#string.rag">&#x23;</a>

轻量 RAG 知识库。  
支持向量搜索、关键词搜索(BM25)、混合搜索(RRF融合)。  
使用 SQLite 存储，适合小规模数据集（万级分块以下）。

创建 RAG 知识库实例

### string.rag.splitByParagraph(text,maxSize) <a id="string.rag.splitByParagraph" href="#string.rag.splitByParagraph">&#x23;</a>
按段落分块，尽量保持段落完整。  
maxSize 指定单块最大字符数，默认 800。  
返回分块数组。

### string.rag.splitText(text,chunkSize,overlap) <a id="string.rag.splitText" href="#string.rag.splitText">&#x23;</a>
将文本按固定大小分块。  
chunkSize 默认 500 字符，overlap 默认 50。  
会尝试在句子边界切分。  
返回分块数组。

## stringRagObject 成员列表 <a id="stringRagObject" href="#stringRagObject">&#x23;</a>

### stringRagObject.addChunk(docId,content,embedding,chunkIdx,meta) <a id="stringRagObject.addChunk" href="#stringRagObject.addChunk">&#x23;</a>
添加单个分块。  
docId 文档标识（通常为路径）。  
content 分块文本内容。  
embedding 向量数组，可为 null 后续补充。  
chunkIdx 分块序号，默认 0。  
meta 可选元数据表。  
返回分块 ID。

### stringRagObject.addChunks(chunks) <a id="stringRagObject.addChunks" href="#stringRagObject.addChunks">&#x23;</a>
批量添加分块（使用事务）。  
chunks 格式: { { docId; content; embedding; chunkIdx; meta }, ... }

### stringRagObject.close() <a id="stringRagObject.close" href="#stringRagObject.close">&#x23;</a>
关闭数据库连接。

### stringRagObject.count() <a id="stringRagObject.count" href="#stringRagObject.count">&#x23;</a>
返回分块总数。

### stringRagObject.getAllDocIds() <a id="stringRagObject.getAllDocIds" href="#stringRagObject.getAllDocIds">&#x23;</a>
获取所有文档 ID 列表。

### stringRagObject.getChunk(id) <a id="stringRagObject.getChunk" href="#stringRagObject.getChunk">&#x23;</a>
获取指定 ID 的分块。

### stringRagObject.getChunksWithoutEmbedding(limit) <a id="stringRagObject.getChunksWithoutEmbedding" href="#stringRagObject.getChunksWithoutEmbedding">&#x23;</a>
获取未向量化的分块列表。  
用于后续批量向量化。

### stringRagObject.hasDocument(docId) <a id="stringRagObject.hasDocument" href="#stringRagObject.hasDocument">&#x23;</a>
检查文档是否已存在。

### stringRagObject.removeDocument(docId) <a id="stringRagObject.removeDocument" href="#stringRagObject.removeDocument">&#x23;</a>
删除指定文档的所有分块。

### stringRagObject.search(query,embedding,topK,alpha) <a id="stringRagObject.search" href="#stringRagObject.search">&#x23;</a>
混合搜索（RRF 融合）。  
query 查询文本，embedding 查询向量。  
alpha 为向量权重(0~1)，默认 0.5。  
返回融合排序的结果数组，包含 score/vecScore/kwScore。

### stringRagObject.searchByKeywords(query,topK) <a id="stringRagObject.searchByKeywords" href="#stringRagObject.searchByKeywords">&#x23;</a>
BM25 关键词搜索。  
自动分词并过滤停用词。  
返回按相关度排序的结果数组。

### stringRagObject.searchByVector(embedding,topK) <a id="stringRagObject.searchByVector" href="#stringRagObject.searchByVector">&#x23;</a>
向量相似度搜索。  
返回按相似度排序的结果数组。

### stringRagObject.updateEmbedding(chunkId,embedding) <a id="stringRagObject.updateEmbedding" href="#stringRagObject.updateEmbedding">&#x23;</a>
更新指定分块的向量。

### stringRagObject.updateEmbeddings(embeddings) <a id="stringRagObject.updateEmbeddings" href="#stringRagObject.updateEmbeddings">&#x23;</a>
批量更新向量。  
embeddings 格式: { [chunkId] = vector, ... }
