@ agentskit/ 擦伤
插件和游戏取回加载生成:块化文档,嵌入到其中,并在查询时检索到正确的上下文.
标记 : ai • 妇女 agents • 妇女 llm • 妇女 agentskit • 妇女 rag • 妇女 retrieval • 妇女 vector-search • 妇女 embeddings • 妇女 ai-agents • 妇女 semantic-search • 妇女 knowledge-base
已核实的证据
- 软件包元数据和测试在
packages/rag/。 。 。 . - 软件包指南 : https://www.agentskit.io/docs/参考文献/packages/rag
- 稳定地图: 文件/服务.md
如何适应生态系统
@ agentskit/ rag 是取回层: 装入文档, 块入文档, 嵌入文档, 重新排序结果, 并将精确的上下文反馈给代理 .
- 探员Kit:与本回购中的其他包一起作曲,从可互换的小零件来构建代理.
- 书记官处: 查找已使用此图层的即时代理和模板 登记. agentskit.io。 。 。 .
- 游戏本: 学习本层背后的生产模式 游戏本. agentskit.io。 。 。 .
为什么是布
- 你的数据 你的经纪人 不需要微调;用自然语言吸收纯文本和查询
- 可编译堆栈 - 使用任意
EmbedFn和任何VectorMemory从@agentskit/adapters财务报告和审定财务报表@agentskit/memory; 在不触碰RAG逻辑的情况下互换任意一层 - 检索准备 —— 说
createRAG()返回 aRetriever交给你@agentskit/runtime或者说useChat自动注入上下文 - 没有博士学位的Tune块 —— 说
chunkSize, (中文(简体) ),chunkOverlap,或习惯split函数——涵盖95%使用案例的3个键
安装
npm install @agentskit/rag @agentskit/memory @agentskit/adapters
文件支持的示例也需要可选 vectra 鼠标。 添加
vectra 安装命令 fileVectorMemory; 运行时间
融合的例子,特别是需求 @agentskit/runtime。 。 。 .
快速实例
import { createRAG } from '@agentskit/rag'
import { openaiEmbedder } from '@agentskit/adapters'
import { fileVectorMemory } from '@agentskit/memory'
const rag = createRAG({
embed: openaiEmbedder({ apiKey: process.env.OPENAI_API_KEY! }),
store: fileVectorMemory({ path: './vectors' }),
})
await rag.ingest([
{ id: 'doc-1', content: 'AgentsKit is a JavaScript agent toolkit...' },
])
const docs = await rag.search('How does AgentsKit work?', { topK: 5 })
console.log(docs)
有运行时间( 返回)
通过RAG实例为 retriever 因此,运行时间将检索到任务中:
import { createRuntime } from '@agentskit/runtime'
import { openai } from '@agentskit/adapters'
const runtime = createRuntime({
adapter: openai({ apiKey: process.env.OPENAI_API_KEY!, model: 'gpt-4o' }),
retriever: rag,
})
const result = await runtime.run('Explain the AgentsKit architecture based on ingested docs')
console.log(result.content)
您也可以打电话 rag.retrieve({ query, messages }) 满足核心 Retriever 合同(例如来自自定义控制器).
特征
createRAG({ embed, store })——摄入+取回的单入口.rag.ingest(docs)散装、嵌入和储存文件.rag.search(query, { topK })——语义相似性搜索.rag.retrieve({ query, messages })—— 说Retriever运行时间/控制器注射合同v1.- 可配置块 :
chunkSize, (中文(简体) ),chunkOverlap,自定义split。 。 。 . - 与任何
EmbedFn和任何VectorMemory。 。 。 . - 复数 :
createRerankedRetriever(Voyage, Jina,习俗)RerankFn, BM25 默认值),createHybridRetriever独立bm25Score。 。 。 . 食谱。 。 。 . - 文件加载器 :
loadUrl, (中文(简体) ),loadGitHubFile, (中文(简体) ),loadGitHubTree, (中文(简体) ),loadNotionPage, (中文(简体) ),loadConfluencePage, (中文(简体) ),loadGoogleDriveFile, (中文(简体) ),loadPdf, (中文(简体) ),loadS3, (中文(简体) ),loadGcs, (中文(简体) ),loadDropbox,以及loadOneDrive。 。 。 . 食谱。 。 。 . - 装入器韧性 : HTTP/网络和应答机构读取/解析故障表面为
RagError(单位:千美元)AK_RAG_LOAD_FAILED) (中文(简体) ). 每一个远程请求和读取的正文都有默认的有限超时和字节限制;两者都可以通过timeoutMs财务报告和审定财务报表maxResponseBytes。 。 。 .timeoutMs默认为15秒,接受正安全整数可达2,147,483,647ms. 超时和可选signal中止在支持时取消获取和 HTTP 车身流 。 调用者中止不会作为每个对象的跳过被吞噬;在树/列表部分成功语义允许的情况下,可以跳过超时或其他单个非破坏失败. S3 列表/get 调用接收 SDK 中止信号, 并同步可插入对象机构接收return(); 忽略其背景的自定义延时器。 如果仅变形的S3体的变形忽视了取消,它们也可能继续. 树/列表加载器在至少一次合格下载成功时可能返回部分成功;如果每次尝试合格下载失败,它们会扔出. 缺少/无效的 S3 对象体计算为失败下载 。 假设报告更多数据时没有新的光标/托起抛出(没有静态切换) .loadNotionPage随后has_more编号 :next_cursor与start_cursor直到完整(保留块顺序;不完全或重复光标抛出).loadUrl需要 HTTPS 来源于allowedOrigins;它不遵循方向调整。 非阳性/非无限maxFiles产量[]。 。 。 . - 记分合同: 无分数搜索/重排结果保持顺序 。 当出现任何分数时,每个结果都必须有一个有限度的分数,并且被排序为下行——混合或非无限分数投出(绝不是编造出)
-Infinity) 变形 Voyage/Jina/ Custom reranker 输出抛出AK_RAG_RERANK_FAILED可选signal打开voyageReranker编号 :jinaReranker已转发至fetch; 请求/机构中止保留AK_RAG_RERANK_FAILED。 。 。 .bm25Score消毒无效k1编号 :b并总是给出有限的分数。 混合相对权重的常态化为有限度的一对,总和为一(均为0~0.5/0.5). - 春克/ 配置安全 : 无效
chunkSize编号 :chunkOverlap编号 :topK值被消毒,所以块化总是终止,搜索永远不会向商店发出非无限的限制. - 摄入行为 :
rag.ingest按顺序嵌入并发送一个矢量存储批次。 对于大型的corpora,在呼叫器中批发文档并坚持在呼叫之间取得进展;包中不会默默地添加通量或无约束的背景队列.
标记下笔记( M)@agentskit/rag/markdown(中文(简体) )
纯度,用于知识基样式Markdown(YAML前题, [[wikilinks]]页:1 子路径是分开的,所以根入及其规模预算不包含 yaml par.
import { parseNote, findSection, parseTable } from '@agentskit/rag/markdown'
const note = parseNote('notes/plan.md', raw)
// { path, title, frontmatter, body, links, frontmatterError? }
const rows = parseTable(findSection(note.body, 'backlog')?.content ?? '')
也导出 : splitFrontmatter, (中文(简体) ), extractWikilinks, (中文(简体) ), stripWikilinks, (中文(简体) ), sections, (中文(简体) ), normalize, (中文(简体) ), plain。无效的前题从不丢出;在 frontmatterError。 。 。 .
博览会和回放本地运行时间中的 S3
节点消费者可以安装 @aws-sdk/client-s3 并让 loadS3 解决它懒惰。 浏览器, Expo/ Metro, 和 React Industrial 捆绑, 不让该对等方进入通用条目; 在引用加载器时明确通过命令构建器 :
import { GetObjectCommand, ListObjectsV2Command, S3Client } from '@aws-sdk/client-s3'
import { loadS3 } from '@agentskit/rag'
await loadS3({
client: new S3Client({}),
bucket: 'knowledge',
commands: { GetObjectCommand, ListObjectsV2Command },
})
生态系统
| 软件包 | 作用 |
|---|---|
| @ agentskit/ 核心 | Retriever, (中文(简体) ), VectorMemory,类型 |
| @ agentskit/ 记忆 | 向量后端( R)fileVectorMemory页:1 |
| @ agentskit/ 适应器 | openaiEmbedder 和其他嵌入器 |
| @ agentskit/ 运行时间 | retriever 代理人的融合 |
| @ agentskit/ 反应 | useChat + 以相同核心类型聊天 UI |
贡献者
许可证
麻省理工学院——见 自由主义。 。 。 .
文档
成熟性和相容性
- 稳定性: β 语录 看到了吗 文件/服务.md
- 节点.js 20+ 财务报告和审定财务报表 类型脚本 严格模式
- 发表于
@agentskit/rag
捐款
分区绑定检索
createPartitionedRAG 编曲 createRAG 不更改核心检索器
合同或现有合同 createRAG 行为 将每个实例绑入非空格
构造时分区 :
import { createPartitionedRAG } from '@agentskit/rag'
const rag = createPartitionedRAG({
store,
embed,
partition: 'team-a',
topK: 5,
overfetchFactor: 4,
onDiagnostics: diagnostics => console.warn(diagnostics),
})
await rag.ingest([{ id: 'guide', content: 'Team A guide' }])
const hits = await rag.retrieve({ query: 'guide' })
Ingest 覆盖保留的 _akPartition 元数据字段和命名空间块
带有 JSON tuple 的ID, 所以不同分区的相同文档 ID 不
覆盖或删除对方的块 。 文件元数据,包括
documentId,继续提供。 返回的块ID是不透明的命名空间ID.
每一次搜索都有一个核心 VectorFilter 实现平等
本地分区元数据, 拒绝外国或缺失元数据, 即使当一个
存储忽略了过滤器。 包装器进行一个商店搜索,最多请求一次
topK * overfetchFactor 考生,最多考取人数,然后返回
多数 topK 火柴。 比赛。 该因子为从 1 到 16 (默认 4) 的整数; 不安全
候选人限制投出。 待命 search 限制和门槛仍然有效.
所需数额 onDiagnostics 每次成功的商店搜索都要回调,
包括空结果 partition, (中文(简体) ), requestedTopK, (中文(简体) ), candidateLimit, (中文(简体) ),
examined, (中文(简体) ), rejected, (中文(简体) ), returned,以及 recall: 'potentially-reduced'这是
保守性: 边框过度可忽略匹配块, 商店可以
内部过滤一个有界限的全球候选人人才库,但不披露排除情况
(截至 fileVectorMemory 页:1 短期结果永远不能证明有理由归还另一个
分区块 。 回拨例外拒绝搜索 .
存储必须忠实保存块元数据和ID. 缺少元数据失败 关闭,但不能编造或错误重新分配分区元数据 检测到 这是检索隔离,不是授权边界 不受信任的作家或商店. 使用物理分离的仓库或后端 需要时信任分区执行或彻底召回. 后端-内部过度牵引在包装者候选人约束之外.