https://github.com/lvwzhen/law-cn-ai 把开源的中国法律法规数据(https://github.com/LawRefBook/Laws)向量化,然后接入ChatGPT,这样你就可以用自然语言对法律法规进行问答。下面是问答的效果:
对于一些复杂的案例场景,回答还是不行的。
要解决这类复杂的,建议接入更多案例,比如:中国裁判文书网等其它有足够多案例的。
如何接入向量数据库?
获得文本的向量表示是通过OpenAI的Embedding接口来转换的,获得向量数据后,再存储在向量数据库(pgvector)中。
为了方便后续的使用(每次回答只回答法律条文的一条),转换前,先拆分文章(page)到每一节(section)。
如何使用?
使用时,依此做下面两步后再返回结果:
- 使用 Embedding 把用户输入的查询内容变成向量。
- 在向量数据库中执行向量相似性搜索,查找与问题相关的内容。
- 将找到的相似内容注入到OpenAI的Completion 文本自动补全接口中,并将响应流式传输到客户端。
注意点及常见问题
受限于OpenAI
我们用的 Embeddings 是 OpenAI 公司使用cl100k_base 词表编码所对应的 1536 维的向量,当 OpenAI 升级或者未来用其它公司接口时,同样一句话,生成的向量会不一样。
为什么不用 ChatCompletion 接口?
不用 ChatCompletion,我认为是基于下面几个考虑:
- 法律条文咨询是一问一答场景,而不是连续对话场景。
- 我们导入的法规和案例,这些原始数据不是问答形式的。
于是我们采用文本补全(Completion)接口。