LLM大语言模型项目知识点总结——数据库:Elasticsearch、Milvus

应用到的数据库:Elasticsearch、Milvus

一、Elasticsearch

1.1 简介

Elasticsearch 是一个分布式的、基于 RESTful API 的搜索和分析引擎,广泛用于大规模的数据存储和快速检索。(就是一个数据库)

1.2 ES中的基本概念

ES的基本概念除了集群、节点之外,还有:索引、Mapping、文档、字段、分词、分词器、分片、副本、倒排索引。

  1. 索引:索引是某一类文档的集合,类似Mysql的数据库。

  2. Mapping:Mapping是定义索引中有哪些字段,以及字段类型,以及字段是否会分词等,类似数据库中定义的表结构。

  3. 文档:文档就是索引里的一条记录,类似数据库表中的一行记录。

  4. 字段:文档有一个或多个字段,每个字段有指定的类型,常用的类型有:keyword、text、数字类型(integer、long、float、double等)、日期类型、对象类型等。
    类型是text类型时,创建文档时ES会对该字段进行分词操作,其余类型则不会做分词。

  5. 分词:ES里最核心的概念就是分词了,ES会对text类型的字段进行分词,分词后就会得到一个个的词项,常用Term表述。

  6. 分词器:ES里有各种各样的分词器,用于不用场景下对text类型的字段进行分词。

  7. 分片:分片实际上是将某个索引的数据切分成多个块,然后均匀地将各个块分配到集群里的各个Node节点上。可以通过ES的策略查找数据块所在的Node。
    这种方案是面向海量数据而设计的,这样数据可以分布在各个节点上,数据量扩张时通过扩充Node数量来快速解决。

  8. 副本:只要涉及到分布式的场景,几乎都有副本的概念。副本主要是为了备份数据,保障数据的安全性。同时也可以将查询请求分摊到各个副本里,缓解系统压力,提高吞吐量。
    ES里的数据分为主分片和副本分片,写数据时先写入主分片,然后在异步写入副本分片。

  9. 倒排索引:比如我们常用的数据库索引,是把索引字段建立目录,保存目录和数据的关系,然后根据目录去查找文档,使用 B+ 树来实现。
    但是倒排索引(又称反向索引),是根据分词后的Term与文档建立关系,每个Term都对应着一堆文档,然后搜索文本时先将文本分词,然后去匹配Term,然后再去根据匹配的得分找出相关文档。

1.3 DSL查询文档

Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括:

  1. 查询所有:查询出所有数据,一般测试用。例如:match_all
  2. 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:match_query、multi_match_query
  3. 精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。
  4. 地理(geo)查询:根据经纬度查询。
  5. 复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。

1、查询所有文档:

GET /order/_search
{
   
   
  "query":{
   
   
    "match_all":{
   
   }
  }
}

2、全文检索(full text)查询:
match查询,查询字段name中包含5G的文档

GET /order/_search
{
   
   
  "query":{
   
   
    "match": {
   
   
      "name": "5G"
    }
  }
}

multi_match查询,返回字段name或者user.address.keyword包含天津市的文档

GET /order/_search
{
   
   
  "query":{
   
   
    "multi_match": {
   
   
      "query": "天津市",
      "fields": ["user.address.keyword","name"]
   }
  }
<think>好的,用户想知道除了LangChain之外,还有哪些方法可以实现大语言模型的知识库。我需要先回顾一下常见的工具和框架。 首先,我记得LlamaIndex是一个专门为LLM设计的数据连接框架,它支持多种数据源,处理非结构化数据效果不错。应该提到它,并且说明它的特点,比如数据索引和查询接口。 然后,Hugging Face的Transformers库也很重要,虽然它主要用于模型训练和推理,但结合Datasets库可以构建知识库,特别是处理自定义数据集的时候。需要解释如何利用这些库来整合外部知识。 接下来,微软的Semantic Kernel可能也是一个选项,它支持插件扩展和知识库集成,适合企业级应用。这点可能需要进一步确认,但记得它确实有这方面的功能。 还有FAISS,这是Meta开源的向量搜索库,虽然本身不是完整的解决方案,但常与其他工具结合使用,比如和LangChain或自定义流程一起处理 embedding 和相似度搜索。应该提到它在向量检索中的作用。 另外,Milvus或Pinecone这样的向量数据库也是关键,它们专为高维向量设计,适合存储和检索知识库中的嵌入向量。需要说明它们如何与LLM配合使用。 DeepLake,由Activeloop开发,结合了向量数据库和数据集管理,可能也是一个选项,特别是处理大规模数据时。 还有自定义流程,用户可能希望自己构建,比如用Transformers处理文本生成,加上FAISS做检索,再设计缓存机制。这种方案灵活,但开发成本高。 需要检查是否有其他框架,比如Haystack,它专注于问答系统,支持多种文档类型和检索器,可能也是一个选项。或者Rasa的NLU组件,不过可能更偏向对话系统。 另外,考虑是否提到一些云服务,比如AWS的Kendra,但可能属于商业解决方案,用户可能更关注开源工具。 要确保覆盖主要的开源工具,并解释它们的优缺点和适用场景。比如LlamaIndex适合快速构建,而自定义方案适合需要高度定制的场景。同时,提醒用户根据需求选择,比如数据量、是否需要实时检索、开发资源等。 最后,总结各个工具的特点,帮助用户做出决策。确保语言口语化,结构清晰,分点说明,避免技术术语过于复杂。</think>除了LangChain,实现大语言模型知识库的主要方案可分为以下5类(含开源框架和底层技术): --- ### **一、专用框架工具** 1. **LlamaIndex(原GPT Index)** - 特点:专为LLM设计的*数据连接框架*,提供结构化/非结构化数据的索引和检索接口 - 核心能力: ✅ 自动构建向量索引、树状索引等数据结构 ✅ 支持PDF/CSV/数据库/API等30+数据源接入 ✅ 查询优化和结果后处理 - 典型应用:快速构建文档问答系统 2. **Haystack** - 特点:由Deepset开发的*端到端问答系统框架* - 核心能力: ✅ 支持Elasticsearch/FAISS等多种检索器 ✅ 包含文档预处理流水线(文本分割/特征提取) ✅ 可集成Transformer模型进行答案生成 --- ### **二、向量数据库方案** | 工具 | 开发者 | 优势领域 | 开源协议 | |-------------|------------|----------------------|----------| | **Milvus** | Zilliz | 超大规模向量检索 | Apache 2 | | **Pinecone**| 商业公司 | 全托管云服务 | 商业 | | **Qdrant** | 开源社区 | 内存优化和过滤查询 | Apache 2 | *使用场景示例:* ```python # 使用Sentence-BERT生成嵌入 + Milvus存储 from sentence_transformers import SentenceTransformer model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(docs) milvus_client.insert(embeddings) ``` --- ### **三、AI基础设施库** 1. **Hugging Face生态** - Transformers库:提供200+预训练模型 - Datasets库:管理结构化知识数据 - 组合方案:使用`BERT`做语义编码 + `FAISS`做快速检索 2. **Jina AI** - 多模态数据处理流水线 - 原生支持神经搜索架构设计 --- ### **四、云原生解决方案** 1. **AWS Kendra** - 亚马逊的智能搜索服务 - 内置与Bedrock模型的无缝集成 2. **Google Vertex AI** - 匹配企业知识库的定制化部署方案 - 支持大模型微调+知识注入 --- ### **五、自研技术栈** 常见技术组合: ``` 文本预处理 → [SpaCy/NLTK] 向量编码 → [OpenAI API/Cohere] 存储引擎 → [PostgreSQL(pgvector扩展)/Redis] 检索算法 → [BM25/DPR] 缓存机制 → [Redis/Memcached] ``` --- ### **选择建议** 1. **快速验证原型**:LlamaIndex + Pinecone 2. **企业级部署**:Milvus + 自研中间件 3. **学术研究场景**:HuggingFace全栈方案 4. **成本敏感项目**:FAISS + PostgreSQL pgvector 最新趋势显示,2023年Q2开始,结合图数据库(如Neo4j)的知识图谱方案使用量增长37%,成为处理复杂知识关系的新方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值