案例三:搭建问答机器人

本文介绍了问答机器人的概念,以及搭建问答机器人的流程。

概念

问答机器人是一种基于人工智能技术的智能对话系统,旨在模拟人类的问答过程,回答用户提出的问题。它通过自然语言处理、知识图谱和机器学习等技术,将用户的问题转化为可计算的形式,并通过分析和理解问题的语义,提供准确、有用的回答。

问答机器人的应用场景非常广泛,例如:

  • 在客户服务领域,用于自动回答用户常见问题,提供即时的帮助和支持。

  • 在教育领域,用于提供在线学习和教育服务,回答学生的问题和解释知识点。

  • 在智能助理领域,用于提供个性化的建议和信息,帮助用户做决策。

此外,问答机器人还可以应用于搜索引擎和知识库,帮助用户快速找到所需的信息。

搭建流程

创建问答数据表

创建问答数据表的SQL语句如下:

CREATE TABLE enterprise_context(
    id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
    content text DEFAULT NULL COMMENT '内容',
    PRIMARY KEY (id)
) ENGINE=InnoDB COMMENT='文本数据';

插入问答数据

插入问答数据的SQL语句如下:

INSERT INTO enterprise_context(id,content) VALUES
(1,'中科软科技股份有限公司(英文:Sinosoft Company Limited,上市公司,证券简称:中科软,证券代码:603927  )是中国科学院软件所实施知识创新试点工程的产物,是研究所技术研究及开发主体转制的结果。中科软科技股份有限公司总部设在北京,注册资金59360万元,是专门从事计算机软件研发、应用、服务的智能密集型高新技术企业。'),
(2,'中科软科技以大型应用软件开发和计算机系统集成为核心,集自主开发的行业通用软件产品、网络信息安全软件产品、大型网络应用软件组合平台、中间件软件产品及应用工具于一体,涵盖了系统软件、支撑软件、建筑智能化工程、行业应用软件等各个层次,并可为大型应用系统工程提供全方位支持。')

创建向量表

创建向量表的SQL语句如下:

/*polar4ai*/CREATE TABLE vector_table(
  id bigint,
  content text, 
  content_vector vector_768, 
  primary key(id)
);

问答数据向量化

将问答数据向量化的SQL语句如下:

/*polar4ai*/select id, content from predict(model _polar4ai_text2vec, select id,content from enterprise_context) 
with (
  x_cols='content',
  primary_key='id',
  mode='async',
  vec_col='content_vector'
)
into vector_table;

其中,_polar4ai_text2vec为问答数据转向量模型,目前仅支持输出768维向量。with()中的参数说明如下:

参数

说明

示例值

primary_key

向量表的主键。

id

x_cols

用于存储文本的字段。

content

mode

文档数据的写入模式。目前仅支持async(异步)模式。

async

vec_col

向量表中存储向量的字段。

content_vector

问答预测

  • 如果您希望机器人问答时,仅使用本文创建向量表问答数据向量化章节中构建的向量表中的内容,则执行如下SQL即可:

    /*polar4ai*/SELECT * FROM predict(model _polar4ai_db_search,SELECT '中科软证券代码是多少?'
    ) with(
    index_name='vector_table',
    content_column_name='content',
    vec_column_name='content_vector',
    top_k=3,
    score_threshold=0.01,
    route_db=0
    );
  • 如果您希望机器人回答时,同时使用向量表和普通表中的内容,那么您需要提前进行数据准备,再执行如下SQL:

    /*polar4ai*/SELECT * FROM predict(model _polar4ai_db_search,SELECT '中科软证券代码是多少?'
    ) with(
    index_name='vector_table',
    content_column_name='content',
    vec_column_name='content_vector',
    top_k=3,
    score_threshold=0.01,
    basic_index_name='schema_index'
    );
说明

_polar4ai_db_search为NL2SQL和文本向量检索融合查询模型,with()中的参数说明如下:

参数

说明

示例值

index_name

向量表名称。

vec_table

content_column_name

向量表中的文本字段。

chunks

vec_column_name

向量表中的向量字段。

vecs

top_k

将查询结果排序后,输出前k个查询结果。

3

score_threshold

向量检索匹配度阈值。取值范围为0~1。

0.01

route_db

是否使用NL2SQL进行检索的开关。默认值为1,即使用NL2SQL检索,此时basic_index_name参数必填。如设置为0,则表示不使用NL2SQL检索,此时无需传递basic_index_name参数。

0

basic_index_name

数据库索引表名称,使用该参数必须提前进行数据准备,且其值需要和数据准备中构建的检索索引表的表名一致。

schema_index