No More Solitude

孤独终洁

Chroma 向量数据库

发布于 # AI

本篇文章内容来源于Chroma官方文档,是学习过程中的翻译整理,仅作参考。 Chroma 是开源 AI 应用数据库,支持多种部署方式(后面会介绍),当使用客户端-服务端模式部署时,官方提供了 python 和 JavaScript/Typescript 两种客户端 sdk,并且支持在 Jupyter Notebook 中运行。 快速入门 安装 pip install chromadb 创建客户端 import chromadb chroma_client = chromadb.Client() 创建集合 集合用于存储嵌入、文档以及其他元数据,集合会为你的嵌入和文档建立索引,并支持高效的检索和筛选。 collection = chroma_client.create_collection(name="my_collection") 添加文本数据 Chroma 将存储你的文本并自动处

向量数据库和索引技术

发布于 # AI

在之前介绍过了什么是 embedding 以及在构建 RAG 系统时如何选择合适的 embedding 模型,当我们将原始数据嵌入成 embedding 向量后,为了能重复使用这些向量数据,我们就需要一个专门用于向量存储的数据库——向量数据库(vector database)。 什么是向量数据库 向量数据库是一种专门用于存储、索引和查询向量数据的数据库系统,它与其他传统数据库的核心差异在于数据表示方式和查询逻辑。 特性 传统数据库 向量数据库 数据存储 结构化数据(数值、字符串、日期等) 高维向量(浮点型数组) 查询方式 精确匹配(如 where name = 'cat') 相似性搜索 索引方式 B+ 树、哈希索引等 ANN 索引(如 HNSW、IVF) 对于向量数据库存在一个普遍的误解,认为向量数据库只是对于近似最近邻(ANN)搜索算法的封装,从本质上来说向量

理解 embedding(嵌入)

发布于 # AI

什么是 embedding 在大模型中,”embedding“指的是将某种类型的输入数据(如文本、图像、声音等)转换成一个稠密的数值向量的过程。这些向量通常包含较多纬度,每一个纬度代表输入数据的某种抽象特征和属性。embedding 的目的是将实际的输入转换为计算机能够更有效处理的向量格式。 在自然语言处理(NLP)中通常使用 embedding 模型将文本数据转换成 embedding 向量,这些 embedding 向量捕获了文本的语义特征,在 embedding 向量空间中,语义相近的实体在向量空间中距离更近,语义不相近的实体在向量空间中距离更远。 由于 embedding 模型有这种精确理解语义的能力,通过对于不同句子段落的语义相似度的计算,embedding 模型可以应用在检索增强生成(RAG)、推荐系统这些领域。 注意:在后面学习 transformer 架构时会发现模型架构

读《一句顶一万句》上篇《出延津记》

发布于 # 读书

只来得及读上篇 上周花了一些时间读刘震云的《一句顶一万句》,书分上下两篇,全书将近27万字,这次读得比较快,花了14个小时读完上篇出延津记的十四章,为什么读得这么快呢,一个原因是微信读书可以免费借阅七天付费书,另一个原因是小说的剧情发展和人物刻画引人深思,让我止不住想要继续读下去。但快赶慢赶得读一周也只读完了上篇的内容,下篇的内容目前已经无法再读下去了。 各个庄地老字辈 书中刻画了很多人物,大多是底层百姓的形象,像是剃头的老裴,杀猪的老曾,赶车的老马,传教的老詹,每一个人物身上都有自己的故事,当然小说的主角是卖豆腐的老杨的第二个儿子杨百顺,来自杨家庄,在小说里作者在前期使用了大量的一个人物来自一个庄的写法,像是马家庄的老马,刘家庄的老刘,孔家庄的老孔这种写法,而且这类角色通常没名没姓,都称老字辈。 百业顺利 卖豆腐的老杨有三个儿子,大儿子杨百业,早期一直跟着老杨卖豆腐,不满老杨把他当做拉磨