法律法规数据向量化

发布时间 2023-04-29 08:07:31作者: 蝈蝈俊

https://github.com/lvwzhen/law-cn-ai 把开源的中国法律法规数据(https://github.com/LawRefBook/Laws)向量化,然后接入ChatGPT,这样你就可以用自然语言对法律法规进行问答。下面是问答的效果:

对于一些复杂的案例场景,回答还是不行的。

要解决这类复杂的,建议接入更多案例,比如:中国裁判文书网等其它有足够多案例的。

如何接入向量数据库?

获得文本的向量表示是通过OpenAI的Embedding接口来转换的,获得向量数据后,再存储在向量数据库(pgvector)中。

为了方便后续的使用(每次回答只回答法律条文的一条),转换前,先拆分文章(page)到每一节(section)。

如何使用?

使用时,依此做下面两步后再返回结果:

  1. 使用 Embedding 把用户输入的查询内容变成向量。
  2. 在向量数据库中执行向量相似性搜索,查找与问题相关的内容。
  3. 将找到的相似内容注入到OpenAI的Completion 文本自动补全接口中,并将响应流式传输到客户端。

注意点及常见问题

受限于OpenAI

我们用的 Embeddings 是 OpenAI 公司使用cl100k_base 词表编码所对应的 1536 维的向量,当 OpenAI 升级或者未来用其它公司接口时,同样一句话,生成的向量会不一样。

为什么不用 ChatCompletion 接口?

不用 ChatCompletion,我认为是基于下面几个考虑:

  • 法律条文咨询是一问一答场景,而不是连续对话场景。
  • 我们导入的法规和案例,这些原始数据不是问答形式的。

于是我们采用文本补全(Completion)接口。