介绍
autoflow是基于 TiDB Vector[1]、LlamaIndex[2] 和 DSPy[3] 构建的开源 GraphRAG(知识图谱)。
相关文章
基于知识图谱的RAG——如何用固定的实体架构在Knowledge Graph上进行RAG检索
llm-graph-builder——从非结构化数据创建知识图谱
功能
类似 Perplexity 的对话搜索页面 :我们的平台配备了一个先进的内置网站爬虫,旨在提升您的浏览体验。该爬虫能够轻松导航官方和文档网站,通过站点地图 URL 抓取,确保全面覆盖并简化搜索流程。
您甚至可以编辑知识图谱,添加更多信息或纠正任何不准确之处。此功能对于增强搜索体验和确保提供的信息准确且最新特别有用。
可嵌入的 JavaScript 代码片段 :通过复制并嵌入一个简单的 JavaScript 代码片段,轻松将我们的对话搜索窗口集成到您的网站中。该小部件通常放置在网站的右下角,便于即时响应与产品相关的查询。
部署
•使用 Docker Compose 部署[4](配置要求:4 个 CPU 核心和 8GB 内存)
如果需要了解更多,请直接查阅文档:https://tidb.ai/docs/quick-start,Github地址:https://github.com/pingcap/autoflow
1. TiDB Vector
TiDB Vector Search(测试版)提供了一种先进的搜索解决方案,能够对各种数据类型(包括文档、图像、音频和视频)执行语义相似性搜索。此功能使开发人员能够使用熟悉的 MySQL 技能,轻松构建具有生成式人工智能(AI)功能的可扩展应用程序。
概念
向量搜索是一种搜索方法,优先考虑数据的含义以提供相关结果。
与依赖于精确关键词匹配和词频的传统全文搜索不同,向量搜索将各种数据类型(如文本、图像或音频)转换为高维向量,并基于这些向量之间的相似性进行查询。这种搜索方法捕捉数据的语义含义和上下文信息,从而更准确地理解用户意图。
即使搜索词与数据库中的内容不完全匹配,向量搜索仍然可以通过分析数据的语义,提供与用户意图一致的结果。
例如,针对“a swimming animal”(一种游泳的动物)的全文搜索仅返回包含这些确切关键词的结果。而向量搜索则可以返回其他游泳动物的结果,如鱼或鸭子,即使这些结果不包含确切的关键词。
向量嵌入
向量嵌入,也称为嵌入,是一系列数字,表示高维空间中的现实世界对象。它捕捉非结构化数据的含义和上下文,如文档、图像、音频和视频。
向量嵌入在机器学习中至关重要,并且是语义相似性搜索的基础。
TiDB 引入了 向量数据类型[5] 和 向量搜索索引[6],旨在优化向量嵌入的存储和检索,增强其在 AI 应用中的使用。您可以在 TiDB 中存储向量嵌入,并使用这些数据类型执行向量搜索查询,以查找最相关的数据。
嵌入模型
嵌入模型是将数据转换为 向量嵌入[7] 的算法。
选择合适的嵌入模型对于确保语义搜索结果的准确性和相关性至关重要。对于非结构化文本数据,您可以在 Massive Text Embedding Benchmark (MTEB) Leaderboard[8] 上找到表现最佳的文本嵌入模型。
要了解如何为特定数据类型生成向量嵌入,请参考嵌入模型的集成教程或示例。
向量搜索的工作原理
在将原始数据转换为向量嵌入并存储在 TiDB 中后,您的应用程序可以执行向量搜索查询,以查找与用户查询语义或上下文最相关的数据。
TiDB Vector Search 通过使用 距离函数[9] 计算给定向量与数据库中存储的向量之间的距离,识别出最接近的 k 个邻近(KNN)向量。查询中最接近给定向量的向量表示在含义上最相似的数据。
TiDB 向量搜索示意图
作为具有集成向量搜索功能的关系数据库,TiDB 允许您将数据及其相应的向量表示(即向量嵌入)存储在一个数据库中。您可以选择以下任何一种存储方式:
•将数据及其相应的向量表示存储在同一表的不同列中。
•将数据及其相应的向量表示存储在不同的表中。这样,在检索数据时需要使用 JOIN
查询来组合这些表。
用例
检索增强生成(RAG)
检索增强生成(RAG)是一种旨在优化大型语言模型(LLMs)输出的架构。通过使用向量搜索,RAG 应用程序可以将向量嵌入存储在数据库中,并在 LLM 生成响应时检索相关文档作为额外上下文,从而提高答案的质量和相关性。
语义搜索
语义搜索是一种基于查询含义而不仅仅是关键词匹配来返回结果的搜索技术。它使用嵌入来解释不同语言和各种类型数据(如文本、图像和音频)之间的含义。然后,向量搜索算法使用这些嵌入来查找满足用户查询的最相关数据。
推荐引擎
推荐引擎是一个主动建议与用户相关且个性化的内容、产品或服务的系统。它通过创建代表用户行为和偏好的嵌入来实现这一点。这些嵌入帮助系统识别其他用户互动或感兴趣的类似项目,从而增加推荐对用户既相关又有吸引力的可能性。
2. DSPY
DSPy 是用于 编程——而非提示——语言模型 的开源框架。它允许您快速迭代 构建模块化 AI 系统 ,并提供用于 优化其提示和权重 的算法,无论您是在构建简单的分类器、复杂的 RAG 管道,还是 Agent 循环。
DSPy 代表 Declarative Self-improving Python。与脆弱的提示不同,您编写组合性的 Python 代码 ,并使用 DSPy 的工具 教导您的语言模型提供高质量的输出 。这 讲座[10] 是一个很好的概念介绍。通过我们的 GitHub 仓库和 Discord 服务器[11] 了解社区、寻求帮助或开始贡献。
GitHub 地址:https://github.com/stanfordnlp/dspy
3. LamaIndex与GraphRAG
本文由山行翻译整理自github及相关文档,如果对您有帮助,请帮忙点赞、关注、收藏,谢谢~
References
[1]
TiDB Vector: https://www.pingcap.com/ai?utm\_source=tidb.ai&utm\_medium=community
[2]
LlamaIndex: https://github.com/run-llama/llama\_index
[3]
DSPy: https://github.com/stanfordnlp/dspy
[4]
使用 Docker Compose 部署: https://tidb.ai/docs/deploy-with-docker
[5]
向量数据类型: https://docs.pingcap.com/tidbcloud/vector-search-data-types
[6]
向量搜索索引: https://docs.pingcap.com/tidbcloud/vector-search-index
[7]
向量嵌入: https://docs.pingcap.com/tidbcloud/vector-search-overview?\_gl=1*1o5ekgd*\_gcl\_au*NDI5NjkwMTg1LjE3MzI0OTgxODQ.*\_ga*MTkxNDMwMzM2OC4xNzMyNDk4MTg0*\_ga\_3JVXJ41175*MTczMjQ5ODE4NC4xLjEuMTczMjQ5ODM2My42MC4wLjEzNzcxMjM3MzA.#vector-embedding
[8]
Massive Text Embedding Benchmark (MTEB) Leaderboard: https://huggingface.co/spaces/mteb/leaderboard
[9]
距离函数: https://docs.pingcap.com/tidbcloud/vector-search-functions-and-operators
[10]
讲座: https://www.youtube.com/watch?v=JEMYuzrKLUw
[11]
Discord 服务器: https://discord.gg/XCGy2WDCQB