File size: 2,096 Bytes
3e7ea7a
 
7ee92e6
3e7ea7a
 
 
 
26e663a
 
3e7ea7a
b79836f
3e7ea7a
 
 
 
 
58df5ed
26e663a
 
ffa8147
 
 
 
 
 
 
26e663a
3e7ea7a
 
 
 
 
26e663a
 
 
 
3e7ea7a
 
 
 
 
47a9554
3e7ea7a
 
 
 
 
 
 
 
 
26e663a
 
 
3e7ea7a
 
24ae0f9
ffa8147
c1f0bbe
24ae0f9
 
3e7ea7a
12d9740
3e7ea7a
26e663a
 
 
3e7ea7a
 
 
7ee92e6
3e7ea7a
 
 
 
 
 
1ecd503
3e7ea7a
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import os
from dotenv import load_dotenv
from prompts import qa_template_V0, qa_template_V1, qa_template_V2

# Load environment variables from .env file
load_dotenv()



# Access the value of OPENAI_API_KEY
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")

os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY

from langchain_openai import ChatOpenAI

# llm_OpenAi = ChatOpenAI(model="gpt-3.5-turbo", temperature=0,)


from langchain.chat_models import ChatAnyscale

ANYSCALE_ENDPOINT_TOKEN=os.environ.get("ANYSCALE_ENDPOINT_TOKEN")
anyscale_api_key =ANYSCALE_ENDPOINT_TOKEN

llm=ChatAnyscale(anyscale_api_key=anyscale_api_key,temperature=0, model_name='mistralai/Mistral-7B-Instruct-v0.1', streaming=False)


## Create embeddings and splitter

from langchain.embeddings import HuggingFaceBgeEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter





# Create Embeddings
model_name = "BAAI/bge-large-en"

embedding = HuggingFaceBgeEmbeddings(
    model_name = model_name,
    # model_kwargs = {'device':'cuda'},
    encode_kwargs = {'normalize_embeddings': True}
)

# Create Splitter
splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=100,
)




from langchain_community.vectorstores import FAISS

# persits_directory="./faiss_Test02_500_C_BGE_large"
# persits_directory="./faiss_V03_C500_BGE_large-final"
# persits_directory="./faiss_V03_C1000_BGE_large-final"
# persits_directory="./faiss_V04_C500_BGE_large-final"
persits_directory="./faiss_V04_C500_BGE_large_web_doc_with_split-final"

vectorstore= FAISS.load_local(persits_directory, embedding) 




# Define a custom prompt for Unser manual
from langchain.prompts import PromptTemplate

QA_PROMPT = PromptTemplate(input_variables=["context", "question"],template=qa_template_V2,)


# Chain for Web 
from langchain.chains import RetrievalQA

Web_qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever = vectorstore.as_retriever(search_kwargs={"k": 4}),
    return_source_documents= True,
    input_key="question",
    chain_type_kwargs={"prompt": QA_PROMPT},
)