unocha/ocha_ai

OCHA AI 模块

安装次数: 1,198

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 7

分支: 0

开放问题: 0

类型:drupal-module


README

此模块包含2个附加模块

  • OCHA AI 聊天模块
  • OCHA AI 标签模块

从 ocha_ai_chat 迁移

  • 卸载 ocha_ai_chatreliefweb_openai
  • config/ocha_ai_chat.settings.yml 复制到安全的地方
  • 运行 druch cex -y
  • 克隆此存储库并运行 drush en ocha_ai_chat -y
  • 运行 druch cex -y
  • config/ocha_ai_chat.settings.yml 复制回配置
  • 运行 druch cim -y
  • 运行 drush cr

settings/php 中添加新设置

$config['ocha_ai.settings']['plugins']['text_extractor']['mupdf']['mutool'] = '/usr/bin/mutool';

$config['ocha_ai.settings']['plugins']['vector_store']['elasticsearch']['url'] = 'http://elasticsearch:9200';
$config['ocha_ai.settings']['plugins']['vector_store']['elasticsearch']['indexing_batch_size'] = 10;
$config['ocha_ai.settings']['plugins']['vector_store']['elasticsearch']['topk'] = 5;

$config['ocha_ai.settings']['plugins']['completion']['aws_bedrock']['region'] = '';
$config['ocha_ai.settings']['plugins']['completion']['aws_bedrock']['api_key'] = '';
$config['ocha_ai.settings']['plugins']['completion']['aws_bedrock']['api_secret'] = '';
$config['ocha_ai.settings']['plugins']['completion']['aws_bedrock']['model'] = 'amazon.titan-text-express-v1';
$config['ocha_ai.settings']['plugins']['completion']['aws_bedrock']['version'] = '';
$config['ocha_ai.settings']['plugins']['completion']['aws_bedrock']['max_tokens'] = 512;

$config['ocha_ai.settings']['plugins']['embedding']['aws_bedrock']['region'] = '';
$config['ocha_ai.settings']['plugins']['embedding']['aws_bedrock']['api_key'] = '';
$config['ocha_ai.settings']['plugins']['embedding']['aws_bedrock']['api_secret'] = '';
$config['ocha_ai.settings']['plugins']['embedding']['aws_bedrock']['model'] = 'amazon.titan-embed-text-v1';
$config['ocha_ai.settings']['plugins']['embedding']['aws_bedrock']['version'] = '';
$config['ocha_ai.settings']['plugins']['embedding']['aws_bedrock']['batch_size'] = 1;
$config['ocha_ai.settings']['plugins']['embedding']['aws_bedrock']['dimensions'] = 1536;
$config['ocha_ai.settings']['plugins']['embedding']['aws_bedrock']['max_tokens'] = 8192;

插件

该模块使用插件系统来处理功能的不同组件

  • 完成插件:处理推理模型的答案生成
  • 嵌入插件:处理嵌入模型的嵌入生成
  • 源插件:处理文档的来源
  • 文本提取插件:处理文件的文本提取
  • 文本分割插件:处理将文本分割成更小的部分
  • 向量存储插件:处理文本和嵌入的存储和检索

依赖

  • apt install mupdf-tools

待办事项

插件

  • OpenSearch 向量存储插件。

OCHA AI 聊天模块

此模块提供了一种“聊天”功能,通过 AI(大型语言模型)对 ReliefWeb 文档进行查询。

这实现了一种 RAG(检索增强生成)方法

  1. 获取 ReliefWeb 文档,以便我们对问题有有限的范围。
  2. 从文档及其附件中提取文本
  3. 将文本分割成段落(更小的文本)
  4. 为段落生成嵌入
  5. 将段落及其嵌入存储在向量数据库中
  6. 在查询时,生成问题的嵌入
  7. 使用问题嵌入和段落嵌入之间的余弦相似度从向量存储中检索相关段落。
  8. 使用相关段落生成一个提示,要求 AI 只基于这些段落中的信息回答
  9. 将提示传递给大型语言模型以获取问题的答案

服务(聊天)

“聊天”功能由 OchaAiChat 服务提供。此服务将不同的插件粘合在一起。

用户对答案的反馈(聊天)

访客可能会看到三种反馈模式

  • 默认:是一个可展开区域,显示下拉菜单,有1-5的值,还有一个开放文本区域用于评论。
  • 简单模式:显示点赞/踩不喜欢的按钮。设置配置 ocha_ai_chat.settings.feedback='simple' 采用此UI,它替换了默认的反馈UI。数据存储在日志表中的单独 thumbs 列中。
  • 组合模式:同时显示这两个小部件。

此外,现在可以存储每个答案是否点击了“复制到剪贴板”按钮。此数据在日志表中的 copied 列中。

待办事项(聊天)

聊天插件

  • OpenSearch 向量存储插件。
  • 单独缓存 RW 搜索转换。

改进答案

  • 根据提取的长度进行筛选(例如,至少4个单词)?
  • 完善提示,也许在每个提取前加上一些前缀,如“事实:”,以便 AI 理解它们是独立的信息片段。

记录

  • 记录请求(调试模式 --> 向插件添加设置)。
  • 记录页数、段落和估计的令牌数量。

OCHA AI 标签模块

服务(标签)

“标签”功能由OchaAiTagTagger服务提供。此服务将不同的插件粘合在一起。