谢尔盖·普罗宁:使用开源工具和pgvector创建AI专家

谢尔盖·普罗宁:使用开源工具和pgvector创建AI专家

💡 原文英文,约2800词,阅读约需10分钟。
📝

内容提要

2023年是AI的一年,许多公司正在思考如何利用AI改善用户体验。本文将介绍如何利用公司数据构建自己的AI专家,并展示代码概念。

🔎

延伸解读

嵌入模型选择需谨慎,后期更换成本高

文章指出,向量嵌入的维度由所选模型决定,例如UAE-Large-V1为1024维,OpenAI的text-embedding-ada-002为1535维。一旦选定模型并生成嵌入,若想更换模型,就必须为所有数据重新创建向量嵌入。因此,在项目初期就应慎重选择模型,避免后期因模型变更带来大规模数据重算的麻烦。

文本分块策略影响语义搜索效果

直接将整篇长文转换为一个向量嵌入可能会损害语义搜索的准确性。文章建议将文本分割成较小的块,如段落、句子甚至单词,具体分块方式应取决于最终用于生成答案的模型以及数据本身的特点。例如,对于Markdown格式的文档,可以使用langchain的MarkdownTextSplitter来生成块。

开源方案可免费尝试,但生产环境需训练模型

文章演示了完全使用开源工具(如Hugging Face的模型和pgvector)构建AI专家,方便读者免费尝试并可将代码转换为付费API。但作者也强调,示例中未进行模型训练,仅依赖上下文生成答案,适用于演示,对于实际生产环境,建议先在自己的数据上训练模型以提高准确性。

pgvector降低技术栈门槛,团队无需学习新数据库

使用pgvector存储向量嵌入的一大优势是团队无需学习新技术或更换现有的PostgreSQL库。pgvector作为PostgreSQL的扩展,允许在原有数据库中添加向量列,并利用熟悉的SQL进行相似性搜索。这降低了构建AI应用的技术门槛,便于集成到现有业务流程中。

❓

Q&A

如何用公司内部数据构建一个AI专家系统?

文章提出四个步骤:1) 准备基础设施(如PostgreSQL加pgvector);2) 抓取公司数据并存储到PostgreSQL中;3) 将用户问题和检索到的上下文组合成提示;4) 使用大语言模型生成回答。

pgvector是什么?它有什么作用?

pgvector是PostgreSQL的一个扩展,允许存储向量嵌入。它引入了vector数据类型和相似度计算操作符(如余弦距离),可用于语义搜索。

向量嵌入、大语言模型和令牌分别是什么?

向量嵌入是数据的数值表示,捕捉其含义和关系;大语言模型(LLM)是驱动AI的深度学习算法集合,能执行多种任务;令牌是LLM中模型读取或生成的文本块,通常不是单词,而是字符或短语。

为什么需要将文档分割成小块?如何分割?

将大文档直接转换为向量嵌入可能损害语义搜索效果,因此建议分割成较小的块(如段落、句子)。分割方式取决于最终使用的模型和数据本身,例如对Markdown文档可使用langchain的MarkdownTextSplitter。

如何生成向量嵌入并存储到pgvector中?

使用Hugging Face的sentence_transformers库加载嵌入模型(如UAE-Large-V1),通过GPU加速生成嵌入。然后使用psycopg2连接PostgreSQL,并利用pgvector库将嵌入插入到包含vector类型列的表中。

如何利用pgvector进行语义搜索并生成回答?

首先将用户问题转换为向量嵌入,然后使用pgvector的余弦距离操作符(<=>)或自定义的match_documents函数检索最相似的文档块。接着将用户问题和检索到的上下文组合成提示,输入到HuggingFace的pipeline(如text2text-generation)中生成回答。

在实际应用中,有哪些注意事项?

文章建议:1) 对模型进行训练以提高回答准确性;2) 不要盲目复用示例脚本,因为模型和数据结构取决于具体用例;3) 可以使用公共API(如OpenAI)替代开源工具进行嵌入生成和问答。

🏷️

标签

➡️

继续阅读