AI(学习笔记第十五课)从langchain的v0.3到v1.0

文章目录

  • AI(学习笔记第十五课)从langchain的v0.3到v1.0
    • [1. `langchain v1.0`的`semantic search`](#1. langchain v1.0semantic search)
      • [1.1 从`semantic search`开始](#1.1 从semantic search开始)
      • [1.2 从`pdf loader`开始练习](#1.2 从pdf loader开始练习)
        • [1.2.1 `pdf file`的准备](#1.2.1 pdf file的准备)
        • [1.2.2 `pdf loader`将`pdf`分成`documents`对象](#1.2.2 pdf loaderpdf分成documents对象)
        • [1.3 使用`text splitter`对docs进行`split`](#1.3 使用text splitter对docs进行split)
        • [1.4 使用`embeddings`的`model`构建向量库`embeding vector`](#1.4 使用embeddingsmodel构建向量库embeding vector)
    • [2. 执行`vector stores and retrievers`](#2. 执行vector stores and retrievers)
      • [2.1 使用`InMemoryVector`来保存`vector`](#2.1 使用InMemoryVector来保存vector)
      • [2.2 使用`InMemoryVector`来进行`query`](#2.2 使用InMemoryVector来进行query)
        • [2.2.1 执行代码](#2.2.1 执行代码)
        • [2.2.2 执行结果](#2.2.2 执行结果)

AI(学习笔记第十五课)从langchain的v0.3到v1.0

  • langchain v1.0的semantic search
  • Documents and document loaders
  • Text splitters
  • Embeddings
  • Vector stores and retrievers

langchain v1.0 learn

从这里开始继续学习。

1.1 从semantic search开始

示例代码

这里需要解释的是,在前面的文章AI(学习笔记第四课) 使用langchain进行AI开发 load documents(pdf)

中,已经学习过同样的内容,但是全新的langchain v1.0已经开始了,从这里继续学习。

1.2 从pdf loader开始练习

1.2.1 pdf file的准备

示例的代码工程中已经准备好了pdf文件,可以作为示例使用。
langchain_from_v1.0/docs/examples_data/nke-10k-2023.pdf

1.2.2 pdf loaderpdf分成documents对象
python 复制代码
from langchain_core.documents import Document
from langchain_community.document_loaders import PyPDFLoader
def main():
    """Main entry point for the application."""
    print("Starting My Python Project...")

    file_path = "./docs/examples_data/nke-10k-2023.pdf"
    loader = PyPDFLoader(file_path)

    docs = loader.load()

    print(len(docs))
    print(f"{docs[0].page_content[:200]}\n")
    print(docs[0].metadata)

这里看到,整个一个pdf文件已经被load成复数的docs

1.3 使用text splitter对docs进行split
python 复制代码
text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=1000, chunk_overlap=200, add_start_index=True
    )
    all_splits = text_splitter.split_documents(docs)
    print(len(all_splits))

可见,langchain对文本的处理是基于split之后的chunk的。

  • 每个chunksize可以设定,这里设定成1000
  • 另外这里的chunk_overlap=200也是有意义的,这里表示每个chunk之间的互相overlapsize,因为如果不互相overlap,那么chunk交界的部分很容易就会弄错,因为边界的文本会有很大的关系。
1.4 使用embeddingsmodel构建向量库embeding vector
python 复制代码
embeddings = OllamaEmbeddings(
        model="nomic-embed-text",
        base_url=OLLAMA_BASE_URL)
    vector_1 = embeddings.embed_query(all_splits[0].page_content)
    vector_2 = embeddings.embed_query(all_splits[1].page_content)
    
    # Example command line arguments
    assert len(vector_1) == len(vector_2)
    print(f"Generated vectors of length {len(vector_1)}\n")
    print(vector_1[:10])

执行结果如下

可见,每个chunksize1000,但是最终被embeding model向量化之后,每个chunkvector的尺寸就是768,这个vector就代表了这个chunk。这些vector是可以做相似性(cosine similarity)比较。

2. 执行vector stores and retrievers

2.1 使用InMemoryVector来保存vector

这里可以看到,516chunks都被生成了768的固定长度的vector。接下来学习如何进行InMemoryVector的使用。

python 复制代码
# create an empty InMemoryVectorStu'using embeding model
    vector_store = InMemoryVectorStore(embeddings)
    # add documents into vector store
    ids = vector_store.add_documents(documents=all_splits)

2.2 使用InMemoryVector来进行query

2.2.1 执行代码
python 复制代码
    results = vector_store.similarity_search(
        "How many distribution centers does Nike have in the US?"
    )

    print(results[0])
2.2.2 执行结果

可见,使用vector store很容易将需要的文本查询到,但是这里还没有使用big model进行分析,还只是使用了embeding model

到这里,从langchain v0.3过渡到了langchain v1.0,接下俩继续学习langchain v1.0

相关推荐
模型启动机2 小时前
GELab-Zero:阶跃开源的4B端侧多模态GUI Agent模型,助力本地可控的移动设备智能化
人工智能·ai·大模型·智能化
不会代码的小猴2 小时前
C++的第十三天笔记
c++·笔记·算法
麦麦在写代码2 小时前
前端学习6(JS 1)
前端·javascript·学习
serve the people2 小时前
tensorflow 零基础吃透:不规则维度 vs 均匀维度(RaggedTensor 核心概念)
人工智能·python·tensorflow
秋刀鱼 ..2 小时前
2026年工业物联网与信息技术国际学术会议(IIoTIT 2026)
人工智能·深度学习·神经网络·物联网·机器学习·人机交互
陈老老老板2 小时前
让AI替你写爬虫:基于自然语言的 AI Scraper Studio 实战解析
人工智能·爬虫
song5012 小时前
鸿蒙 Flutter 图像编辑:原生图像处理与滤镜开发
图像处理·人工智能·分布式·flutter·华为·交互
这张生成的图像能检测吗2 小时前
(论文速读)基于高阶自适应曲线的视觉失衡缺陷多模态无监督图像增强方法CLIP-AE
图像处理·人工智能·计算机视觉·卷积神经网络·低照度图像增强
老蒋新思维2 小时前
创客匠人万人峰会落幕:AI 智能体如何重塑知识变现的效率革命
大数据·人工智能·重构·创始人ip·创客匠人·知识变现