首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI新手村:Atlas入门

AI新手村:Atlas入门

原创
作者头像
dsy
发布2025-04-08 16:31:30
发布2025-04-08 16:31:30
3600
举报

MongoDB 作为非结构化数据库的代表,在作为存储载体的数据库家族中一直重要的位置,但是在实际的业务场景中,尤其是互联网业务中,大多数都是 MySQL 或者 PostgresSQL 这种结构化的数据库作为主要技术选型,MongoDB稍显小众。

不过随着 LLM 的火爆,向量数据库作为 RAG 的后端存储,开始频繁出现在各种技术文章里,主流的向量数据如下图所示,在这张表中其实还落了 MongoDB,虽然性能上它不是最强的,但作为个人开发和测试的场景完全不输表中的数据库。

向量数据库
向量数据库

MongoDB与 Atlas

MongoDB 作为一个开源的数据,诞生于 2009 年,与传统的关系型数据库不同,MongoDB 使用 BSON格式来存储数据,每个文档都是一个独立的存储单元,可以灵活地存储嵌套结构,这一点在 IoT 领域体现得尤为明显,一个硬件设备升级之后,可能多了很多功能,但是在存储上,我们只需要在json 结构的数据字段里增添对应的功能名称即可,而不需要更改整个数据表的结构。

MongoDB Atlas是由 MongoDB 公司提供的一个全托管的数据库云服务(Database-as-a-Service, DBaaS),旨在简化数据库的部署和管理,更重要的是每个 Atlas 项目提供一个免费集群,不用绑卡且永不过期,可以说现在 Atlas 的使用就像本地使用 SQLite 数据库一样简单。

搜索方式

数据库最常用的功能就是查询了,Atlas 一共有 3 中检索方式,分别是Index Search、Vector Search、Atlas Search。

Index Search

Index Search 是最传统的数据库检索方式,可以通过建立索引快速检索符合条件的文档,而无需遍历整个数据库表格。MongoDB Atlas提供了多种索引类型:单字段索引、复合字段索引、文字索引、地理空间索引等。

Vector Search

Vector Search 是随着 LLM 的发展,用于处理高维数据结构而设计的查询,用于相似性搜索的场景。通常情况下,将数据(文本、声音、图像)转化为嵌入式向量(embedding),然后存储在 MongoDB 中。当需要查询的时候,根据用户的输入数据的embedding 计算和其最为相似的向量并返回。

Atlas Search

Atlas Search 是基于Apache Lucene的全文检索引擎,整合在 MongoDB Atlas 中,专门为大量文本数据和复杂查询设计。

实战

常用的MongoDB 的数据格式如下:

String:适合存放文字

Number:用于数字数据

Date:记录日期和时间

Boolean:用于是/否的选项

Array:存放在多个相关项目的列表

Object:用于复杂的资料结构

MongoDB与 SQL的语句对照可以参考下表

Mongo

SQL

Database

Database

Collection

Table

Document

Raw Data

连接 Atlas 云上数据库

代码语言:python
复制
import os
from dotenv import load_dotenv
from pathlib import Path

# 获取当前脚本所在的目录
current_dir = Path(__file__).resolve().parent
# 获取上一层目录的路径
parent_dir = current_dir.parent
# 加载上一层目录中的 .env 文件
env_path = parent_dir / '.env'
load_dotenv(dotenv_path=env_path)
client = MongoClient(os.getenv("MONGODB_ATLAS_URL"))


# 测试联通性
try:
    client.admin.command('ping')
    print("Pinged your deployment. You successfully connected to MongoDB!")
except Exception as e:
    print(e)

插入数据

代码语言:python
复制
data = {
    "text":"hello world.",
    "embedding": [0.123, 0.234, 0.345],
}

collection.insert_one(data)
验证一下
验证一下

查找

代码语言:python
复制
# 查找 
data = collection.find_one({"text":"hello world."})
print("----回傳 dictionary----")
print(f"类型:{type(data)}")
print(data["text"])

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB与 Atlas
  • 搜索方式
    • Index Search
    • Vector Search
    • Atlas Search
  • 实战
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档