导入
使用 LangChain 进行文档的索引与检索
了解 LangChain 如何支持高效的数据索引与检索。
LangChain 就像是语言类应用的终极工具包,尤其是在构建 RAG 系统时。设计 RAG 系统需要多个能够顺畅协作的组件,例如用于查找信息的检索组件,以及利用查找到的信息生成回答的生成组件。LangChain 不仅帮助我们构建这些组件,还简化了它们之间的集成与交互。
...
1import os 2os.environ['OPENAI_API_KEY'] = '<你的 OpenAI API 密钥>' # 在环境变量中设置你的 OpenAI API 密钥
1from langchain_openai import OpenAIEmbeddings 2embeddings_model = OpenAIEmbeddings() # 初始化嵌入模型 3# 为一组文档生成嵌入向量 4embeddings = embeddings_model.embed_documents( 5 [ 6 "这是 RAG 基础课程。", 7 "Educative 是一个由 AI 驱动的在线学习平台。", 8 "Educative 上提供多门生成式 AI 相关课程。", 9 "我正在用我的键盘写这段文字。", 10 "JavaScript 是一门优秀的编程语言" 11 ] 12) 13 14print(len(embeddings)) # 输出生成的嵌入向量数量(应等于文档数量) 15print(len((embeddings[0]))) # 输出第一个嵌入向量的维度长度
1# 示例文档列表,将用于构建数据库 2documents = [ 3 "Python 是一种高级编程语言,以其可读性和丰富的库而著称。", 4 "Java 是一种流行的编程语言,常用于开发企业级应用。", 5 "JavaScript 对网页开发至关重要,能够实现网页的交互功能。", 6 "机器学习是人工智能的一个子领域,涉及训练算法以进行预测。", 7 "深度学习是机器学习的一个分支,利用神经网络对数据中的复杂模式建模。", 8 "埃菲尔铁塔是巴黎著名的地标,具有重要的建筑意义。", 9 "巴黎卢浮宫博物馆收藏了成千上万件艺术品,包括《蒙娜丽莎》。", 10 "人工智能包含多种机器学习技术,使计算机能够从数据中学习。" 11] 12 13# 使用 OpenAI 嵌入模型和文档创建 Chroma 向量数据库 14db = Chroma.from_texts(documents, OpenAIEmbeddings()) 15print(db)
1# 配置数据库作为检索器,设置检索方式为相似性匹配,并返回最相关的 1 条结果 2retriever = db.as_retriever( 3 search_type="similarity", 4 search_kwargs={'k': 1} 5)
1# 使用指定查询执行相似性搜索 2result = retriever.invoke("我在哪里可以看到《蒙娜丽莎》?") 3print(result)