ਆਰਟੀਫ਼ੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ ਦਾ ਨਵਾਂ ਯੁੱਗ: RAG, ਤਰਕ ਅਤੇ ਗ੍ਰਾਫ਼ਾਂ ਦੀ ਸਿਨਰਜੀ

ਆਰਟੀਫ਼ੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ (AI), ਖਾਸ ਕਰਕੇ ਵੱਡੇ ਭਾਸ਼ਾਈ ਮਾਡਲ (LLMs), ਨੇ ਸਾਡੀ ਸਮਝ ਨੂੰ ਬਦਲ ਦਿੱਤਾ ਹੈ ਕਿ ਮਸ਼ੀਨਾਂ ਕੀ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਹਾਲਾਂਕਿ, ਇਨ੍ਹਾਂ ਮਾਡਲਾਂ ਦੀ "ਬਲੈਕ ਬਾਕਸ" ਪ੍ਰਕਿਰਤੀ ਅਤੇ "ਹੈਲੂਸੀਨੇਟ" ਕਰਨ ਦੀ ਵਿਰਤੀ—ਅਰਥਾਤ, ਤੱਥ ਬਣਾਉਣੀ—ਨੇ ਮਹੱਤਵਪੂਰਨ ਸੀਮਾਵਾਂ ਨੂੰ ਉਜਾਗਰ ਕੀਤਾ ਹੈ। ਹੱਲ ਸਿਰਫ ਵੱਡੇ ਮਾਡਲ ਬਣਾਉਣ ਵਿੱਚ ਨਹੀਂ, ਸਗੋਂ ਹੋਸ਼ਿਆਰ ਆਰਕੀਟੈਕਚਰ ਬਣਾਉਣ ਵਿੱਚ ਹੈ। ਇਸ ਲੇਖ ਵਿੱਚ, ਅਸੀਂ ਵੇਖਾਂਗੇ ਕਿ RAG (ਰੀਟਰੀਵਲ-ਅੱਗਮੈਂਟਡ ਜਨਰੇਸ਼ਨ), ਤਰਕ, ਧਿਆਨ, ਗ੍ਰਾਫ਼ ਥਿਊਰੀ, ਅਤੇ ਲਾਜਿਕ ਕਿਵੇਂ ਮਿਲ ਕੇ ਇੱਕ ਐਸੀ ਸਿਨਰਜੀ ਬਣਾਉਂਦੇ ਹਨ ਜੋ ਸਾਨੂੰ ਹੋਰ ਭਰੋਸੇਯੋਗ ਅਤੇ ਸਮਰੱਥ AI ਵੱਲ ਲੈ ਜਾਂਦੀ ਹੈ।

ਮੁੱਖ ਹਿੱਸੇ: ਧਿਆਨ ਤੋਂ RAG ਤੱਕ

ਹੋਰ ਡੂੰਘਾਈ ਵਿੱਚ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ, ਆਓ ਮੁੱਖ ਸੰਕਲਪ ਸਾਫ ਕਰੀਏ।

1. ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ

ਧਿਆਨ ਆਧੁਨਿਕ ਭਾਸ਼ਾ ਮਾਡਲਾਂ (ਜਿਵੇਂ ਕਿ ਟ੍ਰਾਂਸਫਾਰਮਰ, ਜੋ GPT ਨੂੰ ਚਲਾਉਂਦੇ ਹਨ) ਦੀ ਨੀਂਹ ਹੈ। ਸਧਾਰਨ ਤੌਰ 'ਤੇ, ਇਹ ਮਾਡਲ ਨੂੰ ਆਉਟਪੁੱਟ ਬਣਾਉਣ ਸਮੇਂ ਇਨਪੁੱਟ ਟੈਕਸਟ ਦੇ ਵੱਖ-ਵੱਖ ਹਿੱਸਿਆਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਮਹੱਤਤਾ ਦੇਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਜਦੋਂ ਕਿਸੇ ਵਾਕ ਨੂੰ ਅਨੁਵਾਦ ਕਰਨ ਲਈ ਪੁੱਛਿਆ ਜਾਂਦਾ ਹੈ, ਮਾਡਲ ਹਰ ਸ਼ਬਦ ਨੂੰ ਹਰ ਕਦਮ 'ਤੇ ਇੱਕੋ ਜਿਹੀ ਮਹੱਤਤਾ ਨਹੀਂ ਦਿੰਦਾ; ਇਸ ਦੀ ਬਜਾਏ, ਇਹ ਸਭ ਤੋਂ ਸੰਬੰਧਤ ਸ਼ਬਦਾਂ 'ਤੇ "ਧਿਆਨ" ਦਿੰਦਾ ਹੈ। ਇਹ ਸੰਦਰਭ ਨੂੰ ਸਮਝਣ ਲਈ ਬੁਨਿਆਦੀ ਹੈ।

2. RAG: ਰੀਟਰੀਵਲ-ਅੱਗਮੈਂਟਡ ਜਨਰੇਸ਼ਨ

LLMs ਇੱਕ ਨਿਸ਼ਚਿਤ ਸਮੇਂ ਤੱਕ ਉਪਲਬਧ ਡਾਟਾ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਉਹ ਆਪਣੇ ਟ੍ਰੇਨਿੰਗ ਕਟਆਫ਼ ਤੋਂ ਬਾਅਦ ਹੋਈਆਂ ਘਟਨਾਵਾਂ ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਜਾਣਦੇ, ਨਾ ਹੀ ਉਹ ਕਿਸੇ ਵਿਸ਼ੇਸ਼, ਨਿੱਜੀ ਡਾਟਾ (ਉਦਾਹਰਨ ਵਜੋਂ, ਤੁਹਾਡੀ ਕੰਪਨੀ ਦੇ ਅੰਦਰੂਨੀ ਦਸਤਾਵੇਜ਼) ਤੱਕ ਪਹੁੰਚ ਰੱਖਦੇ ਹਨ। RAG ਇਸ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਕਰਦਾ ਹੈ LLM ਨੂੰ ਇੱਕ ਬਾਹਰੀ ਗਿਆਨ ਅਧਾਰ ਨਾਲ ਜੋੜ ਕੇ।

ਇਹ ਪ੍ਰਕਿਰਿਆ ਦੋ ਭਾਗਾਂ ਵਿੱਚ ਵੰਡਦੀ ਹੈ:

  1. ਰੀਟਰੀਵਲ: ਜਦੋਂ ਉਪਭੋਗਤਾ ਕੋਈ ਪ੍ਰਸ਼ਨ ਕਰਦਾ ਹੈ, ਸਿਸਟਮ ਪਹਿਲਾਂ ਕਿਸੇ ਬਾਹਰੀ ਡਾਟਾ ਸਰੋਤ (ਜਿਵੇਂ ਕਿ ਦਸਤਾਵੇਜ਼ ਡਾਟਾਬੇਸ, ਵੈੱਬ ਪੇਜ, ਜਾਂ ਅੰਦਰੂਨੀ ਵਿਕੀ) ਤੋਂ ਸੰਬੰਧਤ ਜਾਣਕਾਰੀ ਲੱਭਦਾ ਹੈ।
  2. ਜਨਰੇਸ਼ਨ: ਮਿਲੀ ਹੋਈ ਸੰਦਰਭ ਜਾਣਕਾਰੀ (ਤੱਥ, ਦਸਤਾਵੇਜ਼) ਨੂੰ ਮੂਲ ਪ੍ਰਸ਼ਨ ਦੇ ਨਾਲ LLM ਨੂੰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਮਾਡਲ ਇਸ ਜਾਣਕਾਰੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਸਹੀ, ਤੱਥ-ਅਧਾਰਤ ਜਵਾਬ ਤਿਆਰ ਕਰਦਾ ਹੈ।

ਇਸ ਨਾਲ ਹੈਲੂਸੀਨੇਸ਼ਨ ਘਟ ਜਾਂਦੀ ਹੈ ਅਤੇ ਮਾਡਲ ਆਪਣੇ ਸਰੋਤ ਵੀ ਦੱਸ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਇਹ ਹੋਰ ਪਾਰਦਰਸ਼ੀ ਅਤੇ ਭਰੋਸੇਯੋਗ ਬਣ ਜਾਂਦਾ ਹੈ।

graph TD;
    A[ਉਪਭੋਗਤਾ ਪੁੱਛਗਿੱਛ] --> B{ਰਿਟਰੀਵਰ};
    B -- ਸਬੰਧਤ ਜਾਣਕਾਰੀ ਦੀ ਖੋਜ ਕਰਦਾ ਹੈ --> C[ਨਾਲੇਜ ਬੇਸ / ਵੈਕਟਰ ਡੇਟਾਬੇਸ];
    C -- ਸੰਦਰਭ ਵਾਪਸ ਕਰਦਾ ਹੈ --> B;
    B -- ਸੰਦਰਭ --> D{ਜਨਰੇਟਰ (LLM)};
    A -- ਮੂਲ ਪੁੱਛਗਿੱਛ --> D;
    D -- ਸੰਦਰਭ ਦੇ ਆਧਾਰ 'ਤੇ ਜਵਾਬ ਤਿਆਰ ਕਰਦਾ ਹੈ --> E[ਤੱਥ-ਅਧਾਰਤ ਅਤੇ ਸਰੋਤ ਦਿੱਤਾ ਜਵਾਬ];

3. ਤਰਕ

ਤਰਕ AI ਦੀ ਉਹ ਸਮਰੱਥਾ ਹੈ ਜੋ ਕਿਸੇ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਕਈ ਕਦਮਾਂ ਵਾਲੀਆਂ ਤਰਕਸੰਗਤ ਕਾਰਵਾਈਆਂ ਕਰ ਸਕਦੀ ਹੈ। ਅਗਲੇ ਸ਼ਬਦ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦੀ ਬਜਾਏ, ਮਾਡਲ "ਸੋਚ ਦੀ ਲੜੀ" ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜਦੋਂ ਗਣਿਤ ਦੀ ਸਮੱਸਿਆ ਹੱਲ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਸਿੱਧਾ ਉੱਤਰ ਨਹੀਂ ਦਿੰਦਾ, ਸਗੋਂ ਉੱਤਰ ਤੱਕ ਪਹੁੰਚਣ ਲਈ ਲਏ ਗਏ ਕਦਮ ਵੀ ਲਿਖਦਾ ਹੈ। ਇਹ ਜਟਿਲ ਕੰਮਾਂ ਲਈ ਸ਼ੁੱਧਤਾ ਨੂੰ ਕਾਫੀ ਵਧਾ ਦਿੰਦਾ ਹੈ।

ਸਹਿਯੋਗ: ਗ੍ਰਾਫ ਥਿਊਰੀ ਅਤੇ ਤਰਕ ਦਾ ਏਕੀਕਰਨ

ਇੱਥੇ ਗੱਲ ਵਾਕਈ ਦਿਲਚਸਪ ਹੋ ਜਾਂਦੀ ਹੈ। RAG ਅਤੇ ਤਰਕ ਸਮਰੱਥਾਵਾਂ ਨੂੰ ਸੰਰਚਿਤ ਡਾਟਾ ਅਤੇ ਨਿਯਮਾਂ ਨਾਲ ਜੋੜ ਕੇ ਅਸੀਂ ਕਈ ਗੁਣਾ ਵਧੀਆ ਪ੍ਰਣਾਲੀਆਂ ਤਿਆਰ ਕਰ ਸਕਦੇ ਹਾਂ।

ਗਿਆਨ ਨੈੱਟਵਰਕ ਵਜੋਂ ਗ੍ਰਾਫ

ਆਮ RAG ਪ੍ਰਣਾਲੀਆਂ ਅਕਸਰ ਉਹ ਜਾਣਕਾਰੀ ਲਿਆਉਂਦੀਆਂ ਹਨ ਜੋ ਟੈਕਸਟ ਦਸਤਾਵੇਜ਼ਾਂ ਤੋਂ ਆਉਂਦੀ ਹੈ, ਜੋ ਕਿ ਵੇਕਟਰ ਰੂਪ ਵਿੱਚ ਬਦਲੀ ਜਾਂਦੀ ਹੈ। ਪਰ ਦੁਨੀਆ ਸਿਰਫ਼ ਅਸੰਰਚਿਤ ਟੈਕਸਟ ਤੋਂ ਨਹੀਂ ਬਣੀ। ਬਹੁਤ ਸਾਰਾ ਗਿਆਨ ਮੂਲ ਰੂਪ ਵਿੱਚ ਸਬੰਧਤ ਹੁੰਦਾ ਹੈ। ਇੱਥੇ ਗ੍ਰਾਫ ਥਿਊਰੀ ਦੀ ਲੋੜ ਪੈਂਦੀ ਹੈ।

ਇੱਕ ਗਿਆਨ ਗ੍ਰਾਫ ਜਾਣਕਾਰੀ ਨੂੰ ਨੋਡ (ਇਕਾਈਆਂ, ਜਿਵੇਂ "ਟਾਲਿਨ", "ਇਸਟੋਨੀਆ") ਅਤੇ ਐਜ (ਸਬੰਧ, ਜਿਵੇਂ "ਰਾਜਧਾਨੀ ਹੈ", "ਇੱਥੇ ਸਥਿਤ ਹੈ") ਵਜੋਂ ਦਰਸਾਉਂਦਾ ਹੈ।

graph TD;
    A(ਟਾਲਿਨ) -- ਇਸ_ਦੇ_ਵਿਚ_ਸਥਿਤ_ਹੈ --> B(ਇਸਟੋਨੀਆ);
    A -- ਰਾਜਧਾਨੀ_ਹੈ --> B;
    C(ਟਾਰਟੂ) -- ਇਸ_ਦੇ_ਵਿਚ_ਸਥਿਤ_ਹੈ --> B;
    D(ਤੂਮਾਸ ਹੇਂਦ੍ਰਿਕ ਇਲਵੇਸ) -- ਰਾਸ਼ਟਰਪਤੀ_ਰਿਹਾ --> B;
    D -- ਜਨਮ_ਹੋਇਆ --> E(ਸਟੌਕਹੋਮ);
    B -- ਮੈਂਬਰ_ਹੈ --> F(ਯੂਰਪੀ ਯੂਨੀਅਨ);

ਇਹ RAG ਨੂੰ ਕਿਵੇਂ ਵਧਾਉਂਦਾ ਹੈ?

  1. ਸੰਰਚਿਤ ਰੀਟਰੀਵਲ: "ਜਦੋਂ ਐਸਟੋਨੀਆ ਯੂਰਪੀ ਯੂਨੀਅਨ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਇਆ ਸੀ, ਉਸ ਸਮੇਂ ਐਸਟੋਨੀਆ ਦਾ ਰਾਸ਼ਟਰਪਤੀ ਕੌਣ ਸੀ?" ਵਰਗੇ ਪ੍ਰਸ਼ਨ ਲਈ, ਸਿਸਟਮ ਸਿਰਫ਼ ਕੁੰਜੀ ਸ਼ਬਦ ਨਹੀਂ ਲੱਭਦਾ। ਇਹ ਗ੍ਰਾਫ਼ ਵਿੱਚ ਨੈਵੀਗੇਟ ਕਰ ਸਕਦਾ ਹੈ, ਐਸਟੋਨੀਆ, EU ਅਤੇ ਰਾਸ਼ਟਰਪਤੀਆਂ ਵਿਚਕਾਰ ਸੰਬੰਧ ਲੱਭ ਸਕਦਾ ਹੈ, ਅਤੇ ਉੱਤਰ ਨਿਕਾਲ ਸਕਦਾ ਹੈ।
  2. ਸੰਦਰਭਕ ਤਰਕ: ਗ੍ਰਾਫ਼ ਮਾਡਲ ਨੂੰ ਅਪਰੋਕਸ਼ ਸੰਬੰਧ ਸਮਝਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਭਾਵੇਂ ਕੋਈ ਦਸਤਾਵੇਜ਼ ਸਿੱਧਾ ਨਾ ਵੀ ਦੱਸੇ "ਤੂਮਾਸ ਹੈਂਡਰਿਕ ਇਲਵੇਸ ਐਸਟੋਨੀਆ ਦੇ EU ਮੈਂਬਰ ਹੋਣ ਵੇਲੇ ਰਾਸ਼ਟਰਪਤੀ ਸੀ," ਸਿਸਟਮ ਇਹ ਉਸਦੇ ਕਾਰਜਕਾਲ ਅਤੇ ਐਸਟੋਨੀਆ ਦੀ EU ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਦੀ ਤਾਰੀਖ਼ ਦੀ ਤੁਲਨਾ ਕਰਕੇ ਨਿਕਾਲ ਸਕਦਾ ਹੈ।

ਸੁਰੱਖਿਆ ਲਈ ਤਰਕ

ਜਦੋਂ ਕਿ LLMs ਸ਼ਕਤੀਸ਼ਾਲੀ ਹਨ, ਉਹਨਾਂ ਕੋਲ ਸਖਤ ਤਰਕ ਦੀ ਸਮਰੱਥਾ ਨਹੀਂ ਹੁੰਦੀ। ਉਹ ਸੰਭਾਵਨਾਵਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹਨ, ਨਾਂ ਕਿ ਨਿਰਧਾਰਤ। ਇੱਥੇ, ਅਸੀਂ ਕਲਾਸੀਕਲ, ਪ੍ਰਤੀਕਾਤਮਕ AI ਦੀਆਂ ਤਾਕਤਾਂ ਦਾ ਲਾਭ ਲੈ ਸਕਦੇ ਹਾਂ: ਫਾਰਮਲ ਲਾਜਿਕ

ਤਰਕ ਦੇ ਨਿਯਮ (ਉਦਾਹਰਨ ਵਜੋਂ, "ਜੇ ਵਿਅਕਤੀ X ਕੰਪਨੀ Y ਦਾ CEO ਹੈ, ਤਾਂ ਵਿਅਕਤੀ X ਕੰਪਨੀ Y ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ") ਕਈ ਤਰੀਕਿਆਂ ਨਾਲ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ:

  1. ਪ੍ਰਸ਼ਨ ਸੁਧਾਰ: ਉਪਭੋਗਤਾ ਦੇ ਪ੍ਰਸ਼ਨ ਨੂੰ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਕੇ, ਤਰਕਕ ਨਤੀਜਿਆਂ ਨਾਲ ਸੰਵਰਧਿਤ ਕਰਕੇ, RAG ਰੀਟਰੀਵਰ ਨੂੰ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਤਿਆਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
  2. ਨਤੀਜੇ ਦੀ ਜਾਂਚ: LLM ਜਵਾਬ ਤਿਆਰ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਉਸਨੂੰ ਤਰਕ ਦੇ ਨਿਯਮਾਂ ਨਾਲ ਜਾਂਚਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਜੇ ਜਵਾਬ ਕਿਸੇ ਨਿਯਮ ਦੀ ਉਲੰਘਣਾ ਕਰਦਾ ਹੈ (ਉਦਾਹਰਨ ਵਜੋਂ, ਦੱਸਦਾ ਹੈ ਕਿ ਕੋਈ ਵਿਅਕਤੀ ਇੱਕੋ ਸਮੇਂ ਦੋ ਥਾਵਾਂ 'ਤੇ ਹੈ), ਤਾਂ ਉਸਨੂੰ ਰੱਦ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਜਾਂ ਮਾਡਲ ਨੂੰ ਮੁੜ ਲਿਖਣ ਲਈ ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ।
  3. ਚੇਨ ਆਫ ਥੌਟ ਨੂੰ ਦਿਸ਼ਾ ਦੇਣਾ: ਤਰਕ ਮਾਡਲ ਦੀ ਸੋਚ ਨੂੰ ਦਿਸ਼ਾ ਦੇ ਸਕਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਹਰ ਕਦਮ ਠੀਕ ਹੈ ਅਤੇ ਸਹੀ ਹੱਲ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ।

ਕੋਡ ਉਦਾਹਰਨਾਂ: ਸਿਧਾਂਤ ਅਮਲ ਵਿੱਚ

ਆਓ ਵੇਖੀਏ ਕਿ ਇਹ ਧਾਰਣਾਵਾਂ Python ਵਿੱਚ ਕਿਵੇਂ ਲਾਗੂ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।

ਉਦਾਹਰਨ 1: langchain ਨਾਲ ਸਧਾਰਣ RAG

ਇਹ ਉਦਾਹਰਨ ਦੱਸਦੀ ਹੈ ਕਿ ਇਨ-ਮੈਮੋਰੀ ਵੈਕਟਰ ਡੈਟਾਬੇਸ ਵਿੱਚ ਦਸਤਾਵੇਜ਼ਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਸਧਾਰਣ RAG ਸਿਸਟਮ ਕਿਵੇਂ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।

# ਲੋੜੀਂਦੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ: pip install langchain openai faiss-cpu
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import TextLoader

# 1. ਡਾਟਾ ਲੋਡ ਕਰੋ (ਉਦਾਹਰਨ ਵਜੋਂ, ਇੱਕ ਸਧਾਰਣ ਟੈਕਸਟ ਫਾਈਲ)
# ਇੱਕ ਫਾਈਲ 'my_data.txt' ਬਣਾਓ ਜਿਸ ਵਿੱਚ ਇਹ ਸਮੱਗਰੀ ਹੋਵੇ:
# "Toomas ਇੱਕ ਕੰਪਨੀ GenAI OY ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ। GenAI OY Tallinn ਵਿੱਚ ਸਥਿਤ ਹੈ।"
loader = TextLoader('my_data.txt')
documents = loader.load()

# 2. ਇੱਕ ਵੈਕਟਰ ਡਾਟਾਬੇਸ (ਰੀਟਰੀਵਰ) ਬਣਾਓ
# ਟੈਕਸਟ ਨੂੰ ਅੰਕੜਿਆਂ ਵਾਲੇ ਵੈਕਟਰਾਂ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ
embeddings = OpenAIEmbeddings(openai_api_key="YOUR_API_KEY")
vectorstore = FAISS.from_documents(documents, embeddings)
retriever = vectorstore.as_retriever()

# 3. LLM ਅਤੇ RAG ਚੇਨ (ਜਨਰੇਟਰ) ਸੈਟਅੱਪ ਕਰੋ
llm = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo", openai_api_key="YOUR_API_KEY")
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff", # "stuff" ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਸਾਰੀ ਲੱਭੀ ਹੋਈ ਸੰਦਰਭ ਸਮੱਗਰੀ ਪ੍ਰੋੰਪਟ ਵਿੱਚ ਪਾ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ
    retriever=retriever
)

# 4. ਇੱਕ ਪ੍ਰਸ਼ਨ ਪੁੱਛੋ
query = "Toomas ਜਿਸ ਕੰਪਨੀ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ, ਉਹ ਕਿੱਥੇ ਸਥਿਤ ਹੈ?"
response = qa_chain.run(query)

print(response)
# ਉਮੀਦ ਕੀਤਾ ਨਤੀਜਾ: "Toomas ਜਿਸ ਕੰਪਨੀ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ, GenAI OY, ਉਹ Tallinn ਵਿੱਚ ਸਥਿਤ ਹੈ."

ਉਦਾਹਰਨ 2: ਧਾਰਣਾਤਮਕ ਗ੍ਰਾਫ-ਅਧਾਰਿਤ ਤਰਕ

ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕਾਰਗਰ ਗ੍ਰਾਫ-RAG ਸਿਸਟਮ ਜਟਿਲ ਹੁੰਦਾ ਹੈ, ਪਰ ਇੱਥੇ ਤਰਕ ਨੂੰ ਸਮਝਾਉਣ ਲਈ ਇੱਕ ਧਾਰਣਾਤਮਕ ਉਦਾਹਰਨ ਦਿੱਤੀ ਗਈ ਹੈ।

import networkx as nx

# 1. ਗਿਆਨ ਗ੍ਰਾਫ ਬਣਾਓ
G = nx.Graph()
G.add_edge("Toomas", "GenAI OY", label="works_at_company")
G.add_edge("GenAI OY", "Tallinn", label="located_in_city")
G.add_edge("Tallinn", "Estonia", label="located_in_country")

def query_knowledge_graph(graph, query):
    """
    ਸੰਕਲਪਤ ਫੰਕਸ਼ਨ ਜੋ ਗ੍ਰਾਫ ਵਿੱਚ ਨੇਵੀਗੇਟ ਕਰਨ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ।
    ਅਮਲ ਵਿੱਚ, ਹੋਰ ਜਟਿਲ ਕੁਐਰੀ ਭਾਸ਼ਾਵਾਂ ਜਿਵੇਂ ਕਿ Cypher ਜਾਂ SPARQL ਵਰਤੀ ਜਾਂਦੀਆਂ ਹਨ,
    ਜਾਂ AI ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਨੂੰ ਗ੍ਰਾਫ ਓਪਰੇਸ਼ਨਾਂ ਵਿੱਚ ਤਬਦੀਲ ਕਰਦਾ ਹੈ।
    """
    # ਮੰਨ ਲਓ ਕਿ AI ਨੇ "Toomas" ਇਕਾਈ ਦੀ ਪਛਾਣ ਕਰ ਲਈ ਹੈ ਅਤੇ ਉਸਦੀ ਸਥਿਤੀ ਲੱਭ ਰਿਹਾ ਹੈ
    if "Toomas" in query and ("where" in query or "location" in query):
        # ਕਦਮ 1: ਪਤਾ ਕਰੋ ਕਿ Toomas ਕਿੱਥੇ ਕੰਮ ਕਰਦਾ ਹੈ
        company = [n for n, _, data in graph.edges("Toomas", data=True) if data.get("label") == "works_at_company"][0]

        # ਕਦਮ 2: ਪਤਾ ਕਰੋ ਕਿ ਉਹ ਕੰਪਨੀ ਕਿੱਥੇ ਸਥਿਤ ਹੈ
        city = [n for n, _, data in graph.edges(company, data=True) if data.get("label") == "located_in_city"][0]

        return f"Toomas {company} ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ {city} ਵਿੱਚ ਸਥਿਤ ਹੈ।"
    else:
        return "ਮੈਨੂੰ ਇਸ ਸਵਾਲ ਦਾ ਜਵਾਬ ਗ੍ਰਾਫ ਵਿੱਚ ਨਹੀਂ ਮਿਲਿਆ।"

# ਇੱਕ ਕੁਐਰੀ ਭੇਜੋ
user_query = "Toomas ਆਪਣੀ ਨੌਕਰੀ ਰਾਹੀਂ ਕਿੱਥੇ ਸਥਿਤ ਹੈ?"
answer = query_knowledge_graph(G, user_query)
print(answer)
# ਆਉਟਪੁੱਟ: "Toomas GenAI OY ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ Tallinn ਵਿੱਚ ਸਥਿਤ ਹੈ।"

ਨਤੀਜਾ: ਏ.ਆਈ. ਦਾ ਭਵਿੱਖ ਹਾਈਬ੍ਰਿਡ ਹੈ

ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ ਦਾ ਭਵਿੱਖ ਇਕੋ ਜਿਹਾ ਨਹੀਂ ਹੈ। ਇਹ ਇਕ ਹਾਈਬ੍ਰਿਡ ਪ੍ਰਣਾਲੀ ਹੈ, ਜਿੱਥੇ ਨਿਊਰਲ ਨੈੱਟਵਰਕ (ਜਿਵੇਂ ਕਿ LLMs) ਦੀ ਲਚਕੀਲਤਾ ਅਤੇ ਪੈਟਰਨ ਪਛਾਣ ਨੂੰ ਪ੍ਰਤੀਕਾਤਮਕ ਪ੍ਰਣਾਲੀਆਂ (ਗ੍ਰਾਫ, ਤਰਕ) ਦੀ ਸਹੀਤਾ ਅਤੇ ਢਾਂਚੇ ਨਾਲ ਮਿਲਾਇਆ ਜਾਂਦਾ ਹੈ।

  • ਅਟੈਂਸ਼ਨ ਮਾਡਲਾਂ ਨੂੰ ਸੰਦਰਭ ਸਮਝਣ ਯੋਗ ਬਣਾਉਂਦੀ ਹੈ।
  • RAG ਮਾਡਲਾਂ ਨੂੰ ਤੱਥਾਂ ਉੱਤੇ ਆਧਾਰਤ ਕਰਦੀ ਹੈ।
  • ਗ੍ਰਾਫ ਡਾਟਾ ਨੂੰ ਢਾਂਚਾ ਅਤੇ ਸੰਬੰਧ ਦਿੰਦੇ ਹਨ।
  • ਤਰਕ ਅਤੇ ਤਰਕਸ਼ੀਲਤਾ ਸਹੀਤਾ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ।

ਇਹ ਮਿਲਾਪ ਏ.ਆਈ. ਨੂੰ ਨਾ ਸਿਰਫ ਹੋਰ ਬੁੱਧੀਮਾਨ ਬਣਾਉਂਦਾ ਹੈ, ਸਗੋਂ ਹੋਰ ਪਾਰਦਰਸ਼ੀ, ਭਰੋਸੇਯੋਗ ਅਤੇ ਆਖ਼ਰਕਾਰ ਅਸਲ-ਦੁਨੀਆ ਦੇ ਜਟਿਲ ਸਮੱਸਿਆਵਾਂ ਦਾ ਹੱਲ ਲੱਭਣ ਲਈ ਹੋਰ ਲਾਭਕਾਰੀ ਵੀ ਬਣਾਉਂਦਾ ਹੈ। ਅਸੀਂ ਉਸ ਦੁਨੀਆਂ ਤੋਂ ਜਿੱਥੇ ਅਸੀਂ ਏ.ਆਈ. ਨੂੰ ਪੁੱਛਦੇ ਸੀ "ਤੂੰ ਕੀ ਸੋਚਦਾ ਹੈਂ?" ਉਸ ਦੁਨੀਆਂ ਵੱਲ ਵਧ ਰਹੇ ਹਾਂ ਜਿੱਥੇ ਅਸੀਂ ਪੁੱਛ ਸਕਦੇ ਹਾਂ "ਤੈਨੂੰ ਕੀ ਪਤਾ ਹੈ ਅਤੇ ਤੈਨੂੰ ਇਹ ਕਿਵੇਂ ਪਤਾ?"