使用阿里云百煉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}")