0

0

使用 Go 构建安全的 RAG 应用程序:GoRag 简介

心靈之曲

心靈之曲

发布时间:2024-11-29 10:51:18

|

1434人浏览过

|

来源于dev.to

转载

使用 go 构建安全的 rag 应用程序:gorag 简介

在快速发展的人工智能开发领域,检索增强生成 (rag) 已成为利用上下文信息增强大型语言模型 (llm) 响应的关键技术。虽然 pythonai/ml 生态系统中占据主导地位,但对系统编程语言中强大的、生产级 rag 实现的需求日益增长。 gorag 是 stacklok 的一个新开源库,它为 go 生态系统带来了 rag 功能。

rag 开发中的 go 案例

go 在构建并发、可扩展系统方面的优势使其成为生产 rag 实现的绝佳选择。与基于 python 的解决方案通常需要复杂的部署策略和仔细的资源管理不同,go 的编译性质和内置并发原语提供了几个优势:

  • 卓越的内存管理和垃圾收集
  • 对高性能并发操作的原生支持
  • 通过单一二进制发行版简化部署
  • 强大的类型安全性和编译时错误检查

在构建需要处理高吞吐量并保持低延迟同时管理多个向量数据库连接和 llm 交互的 rag 系统时,这些特性特别有价值。

gorag:综合 rag 工具包

gorag 通过为 rag 开发提供统一的接口,解决了 go 生态系统中的一个重大缺陷。该库抽象化了使用不同 llm 后端和矢量数据库的复杂性,提供了遵循 go 习惯用法和最佳实践的干净 api。

核心架构

gorag 的核心是实现了模块化架构,将关注点分开:

  • llm互动(同时支持ollama和openai)
  • 嵌入生成
  • 矢量数据库操作(目前支持 postgresql 的 pgvector 和 qdrant)

这种分离允许开发人员交换组件而不影响其应用程序逻辑的其余部分。例如,您可以在本地使用 ollama 开始开发,然后无缝切换到 openai 进行生产。

为您的知识库生成嵌入

该库以其简单的 rag 实现方法而引人注目。这是一个典型的工作流程

针对本地 llm 或 openai 生成嵌入:

embedding, err := embeddingbackend.embed(ctx, documentcontent)
if err != nil {
    log.fatalf("error generating embedding: %v", err)
}

将嵌入存储在矢量数据库中(由 gorag 的抽象层自动处理)并查询相关文档:

ECTouch移动商城系统
ECTouch移动商城系统

ECTouch是上海商创网络科技有限公司推出的一套基于 PHP 和 MySQL 数据库构建的开源且易于使用的移动商城网店系统!应用于各种服务器平台的高效、快速和易于管理的网店解决方案,采用稳定的MVC框架开发,完美对接ecshop系统与模板堂众多模板,为中小企业提供最佳的移动电商解决方案。ECTouch程序源代码完全无加密。安装时只需将已集成的文件夹放进指定位置,通过浏览器访问一键安装,无需对已有

下载
retrieveddocs, err := vectordb.queryrelevantdocuments(
    ctx,
    queryembedding,
    "ollama",
)

使用检索到的上下文来增强提示:

augmentedquery := db.combinequerywithcontext(query, retrieveddocs)

生产注意事项

在生产环境中部署 rag 应用程序时,有几个因素变得至关重要:

可扩展性

gorag 的设计允许矢量数据库操作的水平扩展。例如,带有 pgvector 实现的 postgresql 可以利用连接池和并行查询执行。

监控和可观察性

虽然该库目前处于早期阶段,但它的 go 实现使得使用标准 go 工具(如 prometheus/client_golang 或 opentelemetry)添加指标和跟踪变得简单。

成本管理

该库对多个 llm 后端的支持允许开发人员通过针对不同用例选择适当的提供商来优化成本。例如,使用 ollama 进行开发和测试,同时保留 openai 用于生产工作负载。
未来方向

gorag 项目正在积极开发,即将出现一些令人兴奋的可能性:

  • 支持其他矢量数据库,例如 weaviate 和 milvus
  • 与更多llm提供商集成
  • 增强的安全功能,包括输入验证和速率限制
  • 改进的可观察性和监控能力

入门

对于希望采用 gorag 的开发人员来说,初始设置非常简单:

import "github.com/stackloklabs/gorag"

该库遵循go的标准模块系统,可以轻松集成到现有项目中。示例目录提供了各种用例的全面演示,从基本的 llm 交互到完整的 rag 实现。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

778

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

686

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

769

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

740

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1445

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

571

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

581

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

752

2023.08.11

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

1

2026.01.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.3万人学习

Django 教程
Django 教程

共28课时 | 3.5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号