Eino框架学习
概述
Eino提供了一整套的大模型编排使用所需要的组件
组件名 | 组件功能 |
---|---|
ChatModel | 与大模型交互,输入 Message 上下文,得到模型的输出 Message |
Tool | 与世界交互,根据模型的输出,执行对应的动作 |
Retriever | 获取相关的上下文,让模型的输出基于高质量的事实 |
ChatTemplate | 接收外界输入,转化成预设格式的 prompt 交给模型 |
Document Loader | 加载指定的文本 |
Document Transformer | 按照特定规则转化指定的文本 |
Indexer | 存储文件并建立索引,供后续 Retriever 使用 |
Embedding | Retriever 和 Indexer 的共同依赖,文本转向量,捕获文本语义 |
Lambda | 用户定制 function |
提供了相应的编排方式
编排方式 | 特点和场景 |
---|---|
Chain | 链式有向图,始终向前,简单。适合数据单向流动,没有复杂分支的场景。 |
Graph | 有向图,有最大的灵活性;或有向无环图,不支持分支,但有清晰的祖先关系。 |
Embedding使用
https://www.cloudwego.io/zh/docs/eino/core_modules/components/embedding_guide/
Embedder就是一个将文本转化为向量的组件
需要根据官方的介绍来调用不同接口实现
1 |
|
Loader使用
Loader就是提供了一个加载文档的组件
需要配合Transformer对文档进行处理后使用
https://www.cloudwego.io/zh/docs/eino/core_modules/components/document_loader_guide/
1 |
|
Transformer使用
主要用于文档转换和处理,适用于一下场景
- 将长文档分割成小段落以便于处理
- 根据特定规则过滤文档内容
- 对文档内容进行结构化转换
- 提取文档中的特定部分
https://www.cloudwego.io/zh/docs/eino/core_modules/components/document_transformer_guide/
这里使用markdown来操作
indexer存储使用
可以使用分割处理后文档,用作知识库检索,搭配字节官方的VikingDB火山引擎应该是最好用的
https://www.cloudwego.io/zh/docs/eino/ecosystem_integration/indexer/indexer_volc_vikingdb/
不过我想使用本地PostgreSQL数据库
- 关系型数据库现在依旧是很多企业选用的部分
- PostgreSQL的插件支持比较不错
于是自己开发了一个开源项目
https://github.com/Wood-Q/Eino-pgvector
使用这个开源项目在PostgreSQL里进行向量存储
retriever检索召回
把前面存储在向量数据库里的文档筛选召回,用于提前对大模型补充上下文
https://www.cloudwego.io/zh/docs/eino/ecosystem_integration/retriever/retriever_volc_vikingdb/
最好配合官方VikingDB使用
我还没有对pgvector开发这个功能,后续需要补充