使用阿里云百炼embeddings+langchain+Milvus实现简单RAG

发布于:2025-06-09 ⋅ 阅读:(20) ⋅ 点赞:(0)

使用阿里云百炼embeddings+langchain+Milvus实现简单RAG

注意测试时,替换其中的key、文档等

import os
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_community.vectorstores import Milvus
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import TextLoader


# 2. 初始化阿里云百炼 Embedding-v2 模型,默认1536维度,不可更改
embeddings = DashScopeEmbeddings(
    model="text-embedding-v2",  # 使用百炼的embedding v2模型
    dashscope_api_key=os.getenv("OPENAI_API_KEY")
)

# 3. 加载和分割文本
loader = TextLoader("idea快捷键.md",encoding='utf-8')  # 替换为你的文本文件路径
documents = loader.load()

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=200,  # 每个chunk的字符数
    chunk_overlap=50  # chunk之间的重叠字符数
)
docs = text_splitter.split_documents(documents)

# 4. 连接到 Milvus 并存储向量
vector_db = Milvus.from_documents(
    documents=docs,
    embedding=embeddings,
    connection_args={
        "host": "192.168.80.152",  # Milvus服务器地址
        "port": "19530"       # Milvus端口
    },
    collection_name="example_collection",  # 集合名称
    drop_old=True  # 如果集合已存在则删除重建
)

# 5. 使用示例 - 相似性搜索
query = "查看指定的类结构图"
similar_docs = vector_db.similarity_search(query, k=3)  # 搜索最相似的3个文档

print("相似文档搜索结果:")
for i, doc in enumerate(similar_docs):
    print(f"\n结果 {i+1}:")
    print(doc.page_content)
    print(f"元数据: {doc.metadata}")